【发布时间】:2012-01-12 05:45:39
【问题描述】:
我正在尝试用 C# 编写一个简单的绘图程序,但在我绘图时它一直在闪烁,就像我需要某种双缓冲一样,但我不知道该怎么做。
我在Panel 上绘图,我正在使用Bitmap 来存储图形。
这是我的代码:
public partial class Form1 : Form
{
private Bitmap drawing;
private bool leftDown = false;
private int prevX;
private int prevY;
private int currentX;
private int currentY;
public Form1()
{
InitializeComponent();
drawing = new Bitmap(panel1.Width, panel1.Height);
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
leftDown = true;
prevX = e.X;
prevY = e.Y;
}
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (leftDown)
{
Graphics g = Graphics.FromImage(drawing);
currentX = e.X;
currentY = e.Y;
g.DrawLine(new Pen(Color.Black), new Point(currentX, currentY), new Point(prevX, prevY));
panel1.Invalidate();
prevX = currentX;
prevY = currentY;
g.Dispose();
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
leftDown = false;
}
private void panel1_MouseLeave(object sender, EventArgs e)
{
leftDown = false;
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImageUnscaled(drawing, 0, 0);
}
}
【问题讨论】:
-
我认为您要查找的词是“闪烁”。如果您的计算机正在退缩,也许您应该对它好一点。
-
啊,谢谢,我会编辑的! :-)
标签: c# graphics bitmap gdi+ paint