gpt4 book ai didi

c# - PictureBox 调整大小和绘画问题

转载 作者:行者123 更新时间:2023-11-30 20:14:27 32 4
gpt4 key购买 nike

我想在 Winform 应用程序中显示一些图形,它将是股票的图表绘制工具。我认为(但我不确定...)我必须使用 PictureBox,并使用 System.Drawing.Graphics 类的绘图原语来绘制图表。我已经开始对它进行编码,现在它或多或少可以工作,但是我在调​​整大小功能方面遇到了问题,如下所示:当我调整整个表单的大小时,我看到程序显示图形然后立即清除它。当我停止鼠标移动(没有释放鼠标按钮)时,图形消失了!?!?

我制作了一个小型测试环境来演示该错误:使用 VS2005,创建一个新的 C# Windows 窗体应用程序,仅向窗体添加一个 PictureBox。将 PictureBox 的 anchor 设置为左、上、右和下。添加两个事件处理程序,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();
}
}

这个小应用程序显示了问题。它只绘制了一个椭圆,当然我的绘图代码要复杂得多......

知道为什么当我调整表单大小时椭圆消失了吗????

最佳答案

为什么要使用 PictureBox?我会为您的图表创建一个 UserControl 并在其 Paint 方法中绘制椭圆,仅使用其当前大小。在其构造函数中,将其设置为双缓冲并在 paint 方法中进行所有绘制。

this.SetStyle(ControlStyles.DoubleBuffer | 
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);

关于c# - PictureBox 调整大小和绘画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/487148/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com