我想在 Winform 应用程序中显示一些图形,它将是股票图表绘制工具。我认为(但我不确定......)我必须使用 PictureBox,并使用 System.Drawing.Graphics 类的绘图原语来绘制图表。我已经开始对其进行编码,现在它或多或少可以工作,但是我在调整大小功能时遇到了问题,如下所示:当我调整整个表单的大小时,我看到程序显示图形然后立即清除它。当我停止鼠标移动(没有释放鼠标按钮)时,图形消失了!?!?
我做了一个小测试环境来演示这个bug:使用VS2005,新建一个C# Windows Forms app,只在表单中添加一个PictureBox。将 PictureBox 的锚点设置为左、上、右和下。添加两个事件处理程序,Resize 到 PictureBox,Paint 到 Form。
namespace PictureBox_Resize {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
Ellipse_Area = this.pictureBox1.Size;
}
private Pen penBlack = new Pen(Color.Black, 1.0f);
private Size Ellipse_Area;
private void Form1_Paint(object sender, PaintEventArgs e) {
Graphics g = this.pictureBox1.CreateGraphics();
g.DrawEllipse(penBlack, 0, 0, Ellipse_Area.Width, Ellipse_Area.Height);
}
private void pictureBox1_Resize(object sender, EventArgs e) {
Control control = (Control)sender;
Ellipse_Area = control.Size;
this.pictureBox1.Invalidate();
}
}
}
这个小应用程序显示了问题。它只画一个椭圆,但当然我的绘图代码要复杂得多......
知道为什么当我调整表格大小时椭圆会消失吗????