您的位置:程序门 -> .net技术 -> c#



graphics画图如何实现撤销一步操作?一步就好。。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


graphics画图如何实现撤销一步操作?一步就好。。
发表于:2007-09-05 14:52:49 楼主
有一个ponit数组构成的区域,用一张图片来填充,并且该图片是透明的。(透明的目的是步挡住背景)
bitmap   bitmap   =   new   bitmap(@ "e:\1.jpg ");//贴图文件
graphics   g   =   graphics.fromimage(picturebox1.image);//背景
bitmap   bit   =   new   bitmap(bitmap,   40,   40);
bitmap   cnvbitmap   =   vitrificationimage((image)bit,   0.6f);   //该方法是图片透明
texturebrush   tbrush   =   new   texturebrush(cnvbitmap);
g.fillpolygon(tbrush,   pt);//填充区域
g.dispose();
picturebox1.refresh();

这样的效果是在一次填充的话,它将会覆盖原来的图层,我想实现的是第二次填充的时候就去掉第一次所填充的内容,但不删除picturebox上原来的背景.
大大们   help!!
发表于:2007-09-05 14:57:261楼 得分:0
关注,帮顶
发表于:2007-09-05 14:57:432楼 得分:0
up
发表于:2007-09-05 15:11:283楼 得分:0
up   恩恩
发表于:2007-09-05 15:12:104楼 得分:0
用一个arraylist来保存画的内容,每次重绘就加载arraylist的内容来重绘,只要将arraylist长度减1就可以撤销一步,甚至可以撤销n步
发表于:2007-09-05 15:26:115楼 得分:0
复杂点用undo/redo机制
简单点么自己备份一个bitmap,第二次画时再拿这个出来,不就好了/
发表于:2007-09-05 16:00:176楼 得分:0
image   img=picturebox1.image;//先保存原始背景备用
bitmap   bitmap   =   new   bitmap(@ "e:\1.jpg ");//贴图文件
graphics   g   =   graphics.fromimage(picturebox1.image);//背景
bitmap   bit   =   new   bitmap(bitmap,   40,   40);
bitmap   cnvbitmap   =   vitrificationimage((image)bit,   0.6f);   //该方法是图片透明
texturebrush   tbrush   =   new   texturebrush(cnvbitmap);
g.fillpolygon(tbrush,   pt);//填充区域
g.dispose();
picturebox1.refresh();
//如果要用第二个半透明图片来覆盖窗体的话,先用最原始保存的背景img刷一下picturebox1,然后再开始进行贴图操作,我想这应该是一个比较简单的实现方式
g.drawimage(img,picturebox1.clientrectangle);


快速检索

最新资讯
热门点击