我想完成这样的一个功能:有一个pictureBox在绘图时会闪烁,我想用bitmap来进行缓冲(C#的双缓冲开过,没效果)。
由于绘图时的要求,我得用两个bitmap来进行缓冲,即:
1.在bitBlock上先绘图;
2.将bitBlock上的图形复制到bitBrick上;
3.在bitBrick上绘图;
4.将bitBrick上的图形复制到pictureBox中;但是我遇到了这样的问题,最终输出的图像没有包括在bitBrick上绘制的部分。或者说,在bitBrick上就像没画过一样。
下面放代码,其他的无关代码就不放了,这里只放出与问题有关的代码
这是之前的声明:
Bitmap bitBlock = new Bitmap(300, 500);
Graphics poolBlock = Graphics.FromImage(bitBlock);
Bitmap bitBrick = new Bitmap(300, 500);
Graphics poolBrick = Graphics.FromImage(bitBrick);
Graphics poolPresent = frm.poolPicture.CreateGraphics();这是代码部分:
poolBlock.DrawImage(Res.Block1, 25 * 6, 25 * 5);
bitBrick = bitBlock;
poolBrick.DrawImage(Res.Block6, 25 * 7, 25 * 6);
frm.poolPicture.Image = bitBrick;
输出的结果是只有poolBlock绘制的部分
这是我用过的一个测试代码:
poolBlock.DrawImage(Res.Block1, 25 * 6, 25 * 5);
//这里换成注释了
//bitBrick = bitBlock;
poolBrick.DrawImage(Res.Block6, 25 * 7, 25 * 6);
frm.poolPicture.Image = bitBlock;
MessageBox.Show("1");
frm.poolPicture.Image = bitBrick;
MessageBox.Show("1");
这样的话,会出现bitBlock的图形,msgbox一次,然后图像换成bitBrick的图像(当然,没有bitBlock绘制的部分),再msgbox一次。求高手指教,为什么会出现这个问题。