【发布时间】:2015-01-05 06:00:12
【问题描述】:
我有一个带有“paint”事件的图片框,我也有代码来绘制图形。
如:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics graphics = e.Graphics;
graphics.DrawEllipse(Pens.Blue, 10, 10, 100, 100);
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Invalidate();
}
}
}
我的问题是。如何从 button_click 事件触发这些事件?我在网上搜索了很多,发现了很多类似“.invalidate()”或“.Refresh()”和“.Update”的遮阳篷。但我的任务告诉我,我需要使用 .Refresh() 方法来完成,并且绘画需要在图片框中。
我从 .Refresh() 方法中注意到的。是它擦除了图片框(绘制图片框是如何在初始化时创建的)。所以在按钮中触发 .Refresh 方法对我不起作用。
还有其他关于如何从按钮触发绘制事件的建议吗?
【问题讨论】:
-
什么语言? java, c#?
-
我做了一个 quik 例子。我说的是这个: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics graphics = e.Graphics; graphics.DrawEllipse(Pens.Blue, 10, 10, 100, 100); } private void button1_Click(object sender, EventArgs e) { pictureBox1.Invalidate(); } } }
-
每次我启动应用程序时,都会自动绘制蓝色椭圆,此时按钮没有任何功能。还是我在这里看不清楚;p?
-
您需要添加一个“状态”变量,这样当您按下按钮时,您会看到
drawNow = true;,然后在 PictureBox 中检查该变量。或者,您绘制位图并在 PictureBox 中显示该位图。 -
见@LarsTech 评论 - 它总是会画椭圆,除非你告诉它不要(反之亦然)