大佬们我有一个问题,就是我用一个按钮点击事情去动态生成一些的picturebox控件,当我拖拽移动2个picturebox控件重叠时,都会去触发一次paint事件,导致picturebox里面的图形发生改变,我要怎么去解决
把p.Paint += P_Paint;这行去掉,然后把P_Paint方法里的代码移到buttonClick方法里就可以了
移进去了,也把e.Graphics改成为this.Graphics了可是显示出来没有颜色,是个白框
解决了,把绘制好的图片放到bitmap里面了
你需要解决“形变”。
子类化问题,到类里面去解决。详细细节你可以看看win32编程,或者MFC编程,虽然不是c#,但是讲原理。
class PictureBoxEx:
PictureBox{
override void OnPaint()
}
可以说通俗易懂一点吗,我脑子有点笨
@我就爱c#: 2L的方法(写法)是错误的。
不知道你所谓的形变具体是什么意思,我姑且假设为缩放造成的。
如果仅仅是你说的重绘造成,那你直接让所有重绘一次(Form.Invalidate())即可解决。
@花飘水流兮: 兄弟,你没理解他的问题,他在Paint里加入了随机,每次重绘后PictureBox的图片就会随机变换一个形状,他的意思应该是指拖动后形状变了,所以把随机的代码弄到外层就解决了。
直接把代码移出来肯定不行,要调整,具体的代码我也懒得去写了,其实自己生成一个Image绘制形状赋值给PictureBox就可以了
@I,Robot: 无语~~,
但这样明显是最小化重绘之后由于没有绘制代码就无法显示。