日期:2014-05-18  浏览次数:20959 次

C#画布问题
C#中窗体定义为画布 如何只清除一些指定的图画 而留下其他

求方案 画画方法返回都是void 要清图画的话 我只了解 清整个画布 .Clear();

------解决方案--------------------
这可没办法,画了之后就是一个整体了,要不你把不要清除的那部分备份下,要清除时把备份的覆盖上去
------解决方案--------------------
假如你先画了张风景图当背景,又画了两个人上去,现在要把第二个人换成别的,就该在画了风景图,又画了第一个人后,把当前的画布复制一份保存,然后再画第二个人,你要去掉第二个人了,就把保存的那份画布上的内容画到当前画布来,通过这样的方式来清除一部分内容
------解决方案--------------------
探讨
这样工作量也太大了吧 我如果要其中一个元素做成动态 其他元素不动 那它每次动 我就需要画张新的 如果再加上我让其他元素依照不同的运动轨迹动 那.............

------解决方案--------------------
画布部分刷新分两步走。
第一步,把bitmap更新。一般使用graphics的各种draw或fill可以只更新一小部分,但是要知道更新了哪部分。
第二步,调用界面控件的Invalidate(new Rectangle())这里就是发消息给系统,让他重绘屏幕的Rectangle这一部分。

这样就部分刷新了。