上面画的矩形,画完之后松开就没有了。我曾一句句去注释,没发现哪一句是把矩形弄消失的,经过思考和研究认为,ControlPaint.DrawReversibleFrame的特点就是这样,矩形难以存留。不过以上代码已经把画的矩形记录下来了,有没有办法再画一个,让他永久留下呢?
试想一张纸上有一幅图,我们在上面画矩形,有两张方法:
一是直接拿笔画,相对应的有ControlPaint.Border或者pictureBox1.DrawRectangle。悲剧的是这是不可逆操作,画脏了怎么办?要清楚,只能把图重新加载过。另外还有一个Graphics.Save偏方,也是要重新加载的,万一这期间用户换了张图怎么办?所以这种方法不可取。
二是拿张矩形边框的纸盖上去,相对应的就是使用带边框的panel或者picturebox控件盖上去,好处在于要消失消失,要出现出现,还可随意移动,十分灵活。悲剧的是,纸是不透明的——你画的矩形,是实心的。当然你可以想办法把控件的背景调成Transparent,或者干脆载一张alpha通道全黑的图来使其透明。但这并没有用,因为透明控件显示的是其父控件的内容,我们加载图的控件是picturebox,它不可能作为父控件。
因此我并没有找到一个十分合适的方法,画了矩形立马消失,那就消失吧....
试想一张纸上有一幅图,我们在上面画矩形,有两张方法:
一是直接拿笔画,相对应的有ControlPaint.Border或者pictureBox1.DrawRectangle。悲剧的是这是不可逆操作,画脏了怎么办?要清楚,只能把图重新加载过。另外还有一个Graphics.Save偏方,也是要重新加载的,万一这期间用户换了张图怎么办?所以这种方法不可取。
二是拿张矩形边框的纸盖上去,相对应的就是使用带边框的panel或者picturebox控件盖上去,好处在于要消失消失,要出现出现,还可随意移动,十分灵活。悲剧的是,纸是不透明的——你画的矩形,是实心的。当然你可以想办法把控件的背景调成Transparent,或者干脆载一张alpha通道全黑的图来使其透明。但这并没有用,因为透明控件显示的是其父控件的内容,我们加载图的控件是picturebox,它不可能作为父控件。
因此我并没有找到一个十分合适的方法,画了矩形立马消失,那就消失吧....