如何在picturebox上画多个可拖动的可重叠显示的矩形框
有很多人问过这个问题,也有很多种方法,但一一尝试都不太符合要求,请各位提点
我要做的东西是个下面有背景图片,用户可以在图片上面画框。在空白地方拖动是画新的,在已有矩形上点击是选中矩形,矩形出现8个方向的拖动点。矩形框拖动的时候,要求不能影响其他的矩形,动的时候要平滑。
1.可以移动的透明picturebox。下面一个装载图片的picture box,然后在上面画透明有边框的小picturebox.实现后发现,图片拖动后,有种类似铁血战士里透明人在移动的感觉。而且如果有多个小矩形的话,为了实现透明,都设置了.parent为下面的picturebox,重叠后其中一个的边框会被另外一个挡住。
2.picturebox.drawrectangle,由于画新的rect需要清掉旧的rect,所以只好先让picturebox.image重新加载图片,然后重新画所有line。缺点是一拖动一个,所有的一起刷新,屏幕闪的厉害
3.用ControlPaint.DrawReversibleLine。这个的问题是,当两个rect有重合的边界,会被reverse掉。看起来就像是两者融为一体了。同理,拖动的时候,若是两者重合,那么就两个多不显示......
我这三种情况做实验已经写了数千行代码了,人都快虚脱了
哪位大大给指条明路~严重致谢~
[解决办法]
写1个类实现中间透明的边框的控件,这样放多个对象上去都没问题了.
[解决办法]
参考一下Paint.NET的源码吧,应该能得到启发的