问题描述
大概知道是因为窗体在移动过程中就在不断地进行重绘?然而重绘就会丢失线条,还有将线条划在窗体上pictruebox里的位图里就不会丢失,这是怎么回事?
解决方案
解决方案二:
WM_PAINT就是这样的工作机制
解决方案三:
pictruebox的OnPaint不是你写的
解决方案四:
你自己画的东西要放到OnPaint事件中,这样在重绘时才不会丢失,设置image后,picturebox在的onpaint中会自动DrawImage(this.image,rect);源码如下,看最后面那几句代码protectedoverridevoidOnPaint(PaintEventArgspe){if(this.pictureBoxState[0x20]){try{if(this.WaitOnLoad){this.Load();}else{this.LoadAsync();}}catch(Exceptionexception){if(ClientUtils.IsCriticalException(exception)){throw;}this.image=this.ErrorImage;}}if(this.image!=null){this.Animate();ImageAnimator.UpdateFrames();Rectanglerect=(this.imageInstallationType==ImageInstallationType.ErrorOrInitial)?this.ImageRectangleFromSizeMode(PictureBoxSizeMode.CenterImage):this.ImageRectangle;pe.Graphics.DrawImage(this.image,rect);}base.OnPaint(pe);}
解决方案五:
基本上就是你自己画线不一定都在系统重绘ui之后执行。放在onpaint里是一个办法,还有个简单办法把你画好的image作为backgroundimage赋值给窗体……那么系统就会把你画的内容作为窗体的一部分自动重绘了