C#中一个自行绘图的简单问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:46:20
当前窗体Form1中添加面板panelPicShow,为其添加Paint事件:
private void panelPicShow_Paint(object sender, PaintEventArgs e)
{
PanelInitialPicShowProfile();//设置初始显示函数
}
private void PanelInitialPicShowProfile()
{
Graphics g = this.panelPicShow.CreateGraphics();
Font font = new Font("宋体", 12, FontStyle.Regular);
g.DrawString("这是一个试验" + test, font, Brushes.Blue, 2, 2);
}
此时运行程序,则在面板中始终有"这是一个试验"六个字。
假设有全局变量int k=0;
现在添加按钮btnAdd,添加单击事件
private void btnAdd_Click(object sender, EventArgs e)
{
k++;
//要求在panelPicShow上始终显示k值,如在最大化最小化后k值仍然显示。
//显示位置不重要,比如在(2,20)的位置显示即可,不与PanelInitialPicShowProfile()中的“试验”重合就行,
//再次单击按钮后,上一次的k值清除,此时显示当前k值
//在此过程中PanelInitialPicShowProfile()的初始显示“这是一个试验”始终存在
}

添加按钮btnClear,添加单击事件
private void btnClear_Click(object sender, EventArgs e)
{
//此处要求单击清除按钮后,当前绘制的k值清除,
//PanelInitialP

你像下面这样改一下, 要用 this.panel1.Refresh()这种方法让控件重绘。

int x = 1;
bool show = true;

private void panel1_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.panel1.CreateGraphics();
Font font = new Font("宋体", 12, FontStyle.Regular);
g.DrawString("这是一个试验: " + (show ? x.ToString() : ""), font, Brushes.Blue, 2, 2);
}

private void button1_Click(object sender, EventArgs e)
{
show = true;
x++;
this.panel1.Refresh();
}

private void button2_Click(object sender, EventArgs e)
{
show = false;
this.panel1.Refresh();
}

你用static int k=0试试