首页 新闻 搜索 专区 学院

求助winform中的picturebox控件

0
悬赏园豆:100 [已解决问题] 解决于 2020-09-19 17:16

大佬们我有一个问题,就是我用一个按钮点击事情去动态生成一些的picturebox控件,当我拖拽移动2个picturebox控件重叠时,都会去触发一次paint事件,导致picturebox里面的图形发生改变,我要怎么去解决

我就爱c#的主页 我就爱c# | 初学一级 | 园豆:46
提问于:2020-09-19 13:17
< >
分享
最佳答案
0

把p.Paint += P_Paint;这行去掉,然后把P_Paint方法里的代码移到buttonClick方法里就可以了

收获园豆:100
I,Robot | 大侠五级 |园豆:9583 | 2020-09-19 15:17

移进去了,也把e.Graphics改成为this.Graphics了可是显示出来没有颜色,是个白框

我就爱c# | 园豆:46 (初学一级) | 2020-09-19 17:01

解决了,把绘制好的图片放到bitmap里面了

我就爱c# | 园豆:46 (初学一级) | 2020-09-19 17:16
其他回答(1)
0

你需要解决“形变”。

子类化问题,到类里面去解决。详细细节你可以看看win32编程,或者MFC编程,虽然不是c#,但是讲原理。

class PictureBoxEx:
PictureBox{

override void OnPaint()

}

花飘水流兮 | 园豆:12845 (专家六级) | 2020-09-19 13:31

可以说通俗易懂一点吗,我脑子有点笨

支持(0) 反对(0) 我就爱c# | 园豆:46 (初学一级) | 2020-09-19 13:36

@我就爱c#: 2L的方法(写法)是错误的。

不知道你所谓的形变具体是什么意思,我姑且假设为缩放造成的。

如果仅仅是你说的重绘造成,那你直接让所有重绘一次(Form.Invalidate())即可解决。

支持(0) 反对(0) 花飘水流兮 | 园豆:12845 (专家六级) | 2020-09-19 16:24

@花飘水流兮: 兄弟,你没理解他的问题,他在Paint里加入了随机,每次重绘后PictureBox的图片就会随机变换一个形状,他的意思应该是指拖动后形状变了,所以把随机的代码弄到外层就解决了。
直接把代码移出来肯定不行,要调整,具体的代码我也懒得去写了,其实自己生成一个Image绘制形状赋值给PictureBox就可以了

支持(0) 反对(0) I,Robot | 园豆:9583 (大侠五级) | 2020-09-19 16:39

@I,Robot: 无语~~,

但这样明显是最小化重绘之后由于没有绘制代码就无法显示。

支持(0) 反对(0) 花飘水流兮 | 园豆:12845 (专家六级) | 2020-09-19 17:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册