c# winform重绘问题

SIWWC 西华师范大学 大学本科学生  2017-11-25 03:16:11
c# winform最小化恢复后就变这样了,那些黑块都是按钮、文本框等基本控件,麻烦大家指点一下啊
...全文
329 10 点赞 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
OLD_PINK_DOG 2019-08-16
我想问一下,重绘是简化了内存占用还是只是可以添加额外功能,反而增大了内存占用?
  • 打赏
  • 举报
回复
一个采集 2019-05-08
感觉重绘好事挺难得,理解不了。
  • 打赏
  • 举报
回复
SIWWC 2017-12-20
找到问题了 这是我写的pictureBox重绘代码 private void pictureBox1_Paint(object sender, PaintEventArgs e) { //绘图代码 ........... pictureBox1.Image=img //就是这句代码,陷入了重绘死循环了,根本顾不到Panel2,难怪Panel2无效了都没有重绘 } PS:原来这就是我一运行程序电脑风扇就转起来的原因(捂脸) 谢谢大家了
  • 打赏
  • 举报
回复
引用 2 楼 SIWWC 的回复:
左边那个面板是pictureBox,我又发现在我没有打开图片的时候它又能正常重绘,还有打开了图片之后savefileDialog也出问题了,当保存路径的文件名已存在时,一点保存就卡死了,这到底是怎么回事啊,代码逻辑问题我还能改,但这种莫名的问题我是真的感到无力了
用 pictureBox 打开图片那么就老老实实地打开图片。但是往往根本不是这个问题,而是自己做了比“打开图片”更多的事情,比如说重写了Control(包括Form)的代码去画什么东西,没有调用 base 的代码。尽量不要去在 Paint 中写代码,尽量用高层次的图形开发系统,而不要手写底层代码。
  • 打赏
  • 举报
回复
引用 1 楼 SIWWC 的回复:
刚刚又仔细看了下程序,这两个面板是splitContainer,于是试着我重写了它的Paint方法,加了一句splitContainer.Panel2.Update(),最小化恢复后就可以正常重绘了,说明第二个面板的区域在恢复后其实已经是无效了的,但就是不知道它为什么没有重绘,大家说下自己的想法
看看成熟的控件以外的、你自己的那些代码中有没有什么“重绘”代码吧。这往往是你自己的盲目地重绘的代码,把进程的卡死了。
  • 打赏
  • 举报
回复
lescper2011 2017-11-26
加一个Invalidate()方法。
  • 打赏
  • 举报
回复
xuzuning 2017-11-25
贴出你的代码,实际测试一下
  • 打赏
  • 举报
回复
SIWWC 2017-11-25
  • 打赏
  • 举报
回复
SIWWC 2017-11-25
左边那个面板是pictureBox,我又发现在我没有打开图片的时候它又能正常重绘,还有打开了图片之后savefileDialog也出问题了,当保存路径的文件名已存在时,一点保存就卡死了,这到底是怎么回事啊,代码逻辑问题我还能改,但这种莫名的问题我是真的感到无力了
  • 打赏
  • 举报
回复
SIWWC 2017-11-25
刚刚又仔细看了下程序,这两个面板是splitContainer,于是试着我重写了它的Paint方法,加了一句splitContainer.Panel2.Update(),最小化恢复后就可以正常重绘了,说明第二个面板的区域在恢复后其实已经是无效了的,但就是不知道它为什么没有重绘,大家说下自己的想法
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-11-25 03:16
社区公告

让您成为最强悍的C#开发者