我现在想在一个位图上画空心的红圆!(用鼠标画)!-----这里没有什么问题!
鼠标单击某个圆,那个圆就消失!背景恢复.
非常感谢大家!!!
鼠标画的时候记住画的位置
鼠标单击的时候看坐标是否在那个圆里面
如果再就擦掉圆
擦除有两种方法
1 画同样大小,颜色是背景色的圆
2 画圆前保存以前的背景,现在再复制上去
这个问题没有那么简单
首先在图中肯定不止一个园,而且多个园也不可能没有重合部分,然后图中的园的总数是不定的。
所以你必须从三个方面去实现,
做一个类似Z-order的东西,将你的显示区域分成多个层,如果添加一个新园,这个新园的所有像素所在的区域没有一个像素属于其它已经存在园的,就将其放在最底层,
否则就搜索一遍这些像素中哪个像素所属的园的层数最高,就放在他的上面一层。
标记这些像素,最简单的方法就是维护一张像素层数表
维护一张各园的链表,用它来找到需要增加和删除那个园,并且纪录园的边宽,填充色,边界色,显示模式等等属性信息。
刷新可以有两种方式,一种方式就是将所有的园重新绘制一遍,将被其他园覆盖的部分隐藏掉,另一种方式是只对当前删除或添加的园的区域进行重新计算,当然原始图像是最底层的像素了,如果没有其他的园覆盖了,就显示原始图像的像素。
具体算法程序可能还要复杂一点。