我在应用程序中,使用了1个Picturebox,其中逻辑如下:
定义了一个全局bitmap1,有一个绘制函数redraw,由Graphics.FromImage产生的Graphics绘图,绘完后再由picturebox.DrawImage画出这幅图,
在Picturebox的paint函数中也是picturebox.DrawImage(bitmap1),然后picturebox.Flush
现在问题是,当有其他窗体在picuturebox上时,移动窗体,picuturebox会出现白色框,过半天才会把白色挖去的部分补上
各位能否帮助一下怎么解决这个问题,能实时把其他窗体产生的背景补上 谢谢
定义了一个全局bitmap1,有一个绘制函数redraw,由Graphics.FromImage产生的Graphics绘图,绘完后再由picturebox.DrawImage画出这幅图,
在Picturebox的paint函数中也是picturebox.DrawImage(bitmap1),然后picturebox.Flush
现在问题是,当有其他窗体在picuturebox上时,移动窗体,picuturebox会出现白色框,过半天才会把白色挖去的部分补上
各位能否帮助一下怎么解决这个问题,能实时把其他窗体产生的背景补上 谢谢
伪代码代码如下
form_Load()
{
Graphics g0 =pictureBox1.CreateGraphics();//忘了是不是这句,反正g0 是和picturebox1挂在一起
bitmap1 =new Bitmap(pictureBox1.width,pictureBox1.height);
Graphics g_bit =Graphics.FromImage(bitmap1);}
picturebox1_paint(...)
{
g0.DrawImage(bitmap1);
g0.Flush();
}//自己的redraw函数
void redraw_all
{
g_bit.Draw.....//绘制
}
像这样的代码写完,有其他窗体在上面挪动时,有一段时间其他窗体会在picturebox上留下白色区域,怎么处理呢?
Application.Idle += new EventHandler(Application_Idle);void Application_Idle(object sender, EventArgs e)
{
g0.DrawImage(bitmap1);
g0.Flush();
}
Graphics g_bit; public TestPictureBox()
{
InitializeComponent();
} private void TestPictureBox_Load(object sender, EventArgs e)
{
bitmap1 = new Bitmap(pictureBox1.Width, pictureBox1.Height);
g_bit = Graphics.FromImage(bitmap1);
} private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(bitmap1, 0f, 0f);
} private void textBox1_TextChanged(object sender, EventArgs e)
{
g_bit.DrawString(textBox1.Text, Font, new SolidBrush(Color.Blue), 2f, 2f);
pictureBox1.Invalidate();
}
form_Load()
{
//这句不要了:Graphics g0 =pictureBox1.CreateGraphics();//忘了是不是这句,反正g0 是和picturebox1挂在一起
bitmap1 =new Bitmap(pictureBox1.width,pictureBox1.height);
Graphics g_bit =Graphics.FromImage(bitmap1);
pictureBox1.Image =bitmap1;
}
picturebox1_paint(...)
{
//g0.DrawImage(bitmap1); 也不要了
g0.Flush();
} //自己的redraw函数
void redraw_all
{
g_bit.Draw.....//绘制
} 我分析了一下,把图片的引用直接传给picturebox1的image,然后不管怎样 g_bit都是在bitmap1上绘制,就直接刷新了,谢谢各位