C#绘制的图形比窗口大时,拖动窗口的滚动条图形就会出现拖影的现象,请问如何解决? 10
publicvoidDrawI(){Bitmapbmp=newBitmap(this.pictureBox1.Width,this.pictureBox1.Height)...
public void DrawI()
{
Bitmap bmp = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);//在内存中创建一个bmp图,bmp的大小和窗口中picturebox的大小相同
Graphics g = Graphics.FromImage(bmp);//下图中的第一行代码是说通过内存中的bmp图像创建一个在内存中的画布g,那么在画布上的任何操作就都是在内存中操作了,第二行和第三行代码分别是创建一个绿色的笔刷,然后创建一个长方形
Brush b = new SolidBrush(Color.SeaGreen);
Rectangle r = new Rectangle(0, 0, this.pictureBox1.Width, this.pictureBox1.Height);
g.FillRectangle(b, r);//下图中的代码就是在内存中的画布中画我们要画的图形
b.Dispose();//下图中的代码是销毁资源,分别需要销毁的资源是笔刷资源和内存中的画布资源
g.Dispose();
this.pictureBox1.CreateGraphics().DrawImage(bmp, 0, 0);//最后就是我们手动双缓冲技术的 最后一步了,就是将内存中的bmp的图像一次性的展示到窗口中的picturebox中
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
DrawI();
} 展开
{
Bitmap bmp = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);//在内存中创建一个bmp图,bmp的大小和窗口中picturebox的大小相同
Graphics g = Graphics.FromImage(bmp);//下图中的第一行代码是说通过内存中的bmp图像创建一个在内存中的画布g,那么在画布上的任何操作就都是在内存中操作了,第二行和第三行代码分别是创建一个绿色的笔刷,然后创建一个长方形
Brush b = new SolidBrush(Color.SeaGreen);
Rectangle r = new Rectangle(0, 0, this.pictureBox1.Width, this.pictureBox1.Height);
g.FillRectangle(b, r);//下图中的代码就是在内存中的画布中画我们要画的图形
b.Dispose();//下图中的代码是销毁资源,分别需要销毁的资源是笔刷资源和内存中的画布资源
g.Dispose();
this.pictureBox1.CreateGraphics().DrawImage(bmp, 0, 0);//最后就是我们手动双缓冲技术的 最后一步了,就是将内存中的bmp的图像一次性的展示到窗口中的picturebox中
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
DrawI();
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询