大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
自动重绘,如果是False的话,不会自动重绘,必须执行Refresh指令才会重绘。
创新互联建站是一家成都网站建设、成都网站制作,提供网页设计,网站设计,网站制作,建网站,定制开发,网站开发公司,成立于2013年是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。
所谓重绘,是指当窗体或控件最小化,或被遮挡以后,再显示的时候,会将被遮挡的部分重新画出来。
可以通过2个方法:
1、将绘制相关代码全部放在 Form_Paint 这个事件中,其实此时不需要什么API,只要Form1.Refresh 就可以再次执行这个事件里的代码了,如果需要不同的显示,那么可以设置多个公共变量,显示不同的时期的样式就设置某个变量为不同的值,然后 Paint 中根据该值执行不同代码。
2、将AutoReDraw设置为TRUE,此时无论代码写在哪,都能将改变立即反映,但是如果程序中设计到调用 Form1.hDC 的时候可能会出问题,这个原因开始我也纳闷过,后来才知道 AutoReDraw设置为TRUE 时获取的 HDC仅是个伪HDC,是获取不到实际的HDC的 。
扩展资料:
使用下列图形方法工作,如:Circle、Cls、Line、Point、Print 和 Pset,该属性极为重要。利用这些方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置 AutoRedraw 为 True,将在 Form 或 PictureBox 控件中自动重绘输出。
运行时 在程序中设置 AutoRedraw,可以在画持久图形(如背景色或网格)和临时图形之间切换。如果设置 AutoRedraw 为 False,以前的输出成为背景屏幕的一部分。当 AutoRedraw 设置为 False,用 Cls 方法清除绘图区时不会删除背景图形。把 AutoRedraw 改回 True 后,再用 Cls 将清除背景图形。
注意 如果设置 BackColor 属性,所有图形和文本,包括持久图形,都被清除。一般来说,除非 AutoRedraw 设置为 True,所有图形都需用 Paint 事件显示。
参考资料来源:百度百科-autoredraw
继承(Inherits)控件就可以重写它的属性和方法,图标可以在paint中重绘,用gdi,工具主要在drawing和drawing2d中。
combobox弹出的框增加图标吗?个人看法可能需要得到那个句柄,才可以重绘,但那个好像是一体的,不知道能不能弄到句柄。
textbox可以自定义高度。只是以行高度为单位,改变字体大小即可,没必要重写吧。
我也自学,感觉基础容易学,进阶资料少。循序渐进也没序可循,基本是在摸索。
都是想到什么问题,就立下一个目标,然后攻破他,结果可能是尝试几天后,发现目标超出能力范围。
晦涩是相对的,实践出真知,多动手,基础就好了。
新建一个Winform,在和Form1平行的位置粘贴如下代码
Public Class MyLabel Inherits Label Protected Overrides Sub OnPaint(e As PaintEventArgs) e.Graphics.DrawEllipse(New Pen(Color.Red), New Rectangle(2, 2, 10, 10)) MyBase.OnPaint(e) End Sub End Class
运行,停掉,在工具箱找到MyLabel,拖动就可以看到效果。这只是最基本的重写,要模仿QQ还需要其他技术以及美工。