求教:bitmap之间复制图片出错

ChanseyJack 2011-09-27 05:09:50
我想完成这样的一个功能:有一个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一次。

求高手指教,为什么会出现这个问题。
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChanseyJack 2011-09-28
  • 打赏
  • 举报
回复
好吧,我明白了,自己放出来。以免别人重蹈覆辙。
问题在这里:
bitBrick = bitBlock;
这句话所传递的,不是bitBlock的图像内容,而是bitBlock对象。
现在bitBrick所指的已经是bitBlock了,所以无效
A32343983 2011-09-27
  • 打赏
  • 举报
回复
没这样做过。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧