成都网站建设设计

将想法与焦点和您一起共享

vb.net重绘画图 能够自动重绘图形vb

VB.NET怎么重绘?

新建一个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还需要其他技术以及美工。

VB.net中如何画图?

VB.net与VB不同。

VB.net已经有专门绘图的类。

可以定义笔刷然后用Drawing类中的方法绘制。

Private Sub DrawEllipse()

Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)

Dim formGraphics as System.Drawing.Graphics

formGraphics = Me.CreateGraphics()

formGraphics.DrawEllipse(myPen, New Rectangle(0,0,200,300))

myPen.Dispose()

formGraphics.Dispose()

End Sub

Private Sub DrawRectangle()

Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)

Dim formGraphics as System.Drawing.Graphics

formGraphics = Me.CreateGraphics()

formGraphics.DrawRectangle(myPen, New Rectangle(0,0,200,300))

myPen.Dispose()

formGraphics.Dispose()

End Sub

VB.net绘制可缩放的网格坐标的相关问题

你用CreateGraphics方法的吧,这是临时的Graphics,只要你把窗口拉出屏幕或者有其他的对话框遮挡,里面的内容就会立即重画,而CreateGraphics是临时的,所以不会再为你画了。有两种方法,第一是重写重画事件Paint,第二当作图片放入pictureBox里(其实pictureBox也是重写Paint事件的)

很清楚可以看到,蓝色的是DrawLines,红色的和绿色的是画椭圆,至于捕获,是重写了MouseMove事件的,在这个事件里进行算法计算,算出对应的点,然后激活Paint事件。

vb.net 绘图,重绘知识

继承(Inherits)控件就可以重写它的属性和方法,图标可以在paint中重绘,用gdi,工具主要在drawing和drawing2d中。

combobox弹出的框增加图标吗?个人看法可能需要得到那个句柄,才可以重绘,但那个好像是一体的,不知道能不能弄到句柄。

textbox可以自定义高度。只是以行高度为单位,改变字体大小即可,没必要重写吧。

我也自学,感觉基础容易学,进阶资料少。循序渐进也没序可循,基本是在摸索。

都是想到什么问题,就立下一个目标,然后攻破他,结果可能是尝试几天后,发现目标超出能力范围。

晦涩是相对的,实践出真知,多动手,基础就好了。

vb.net 画线再画保留以前画得

可以把所有画的线都保存在一个列表中,画的时候全部画出即可。如下:

Public Class Form1

Class Line      '直线类

  Public Point1, Point2 As Point     '成员,直线的两个端点

  Sub New(p1 As Point, p2 As Point)   '构造方法

      Point1 = p1

      Point2 = p2

  End Sub

  Public Sub Draw(g As Graphics)      '绘制方法

      g.DrawLine(Pens.Black, Point1, Point2)

  End Sub

End Class

Private Lines As New List(Of Line)      '列表用于保存所有画下的直线

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

  BackColor = Color.White

  DoubleBuffered = True       '开启双缓冲可有效避免闪烁

End Sub

Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown

  Lines.Add(New Line(e.Location, e.Location))     '在直线列表中添加直线

End Sub

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove

  If e.Button  Windows.Forms.MouseButtons.Left Then Return '左键未按下

  '鼠标拖动时改变列表最后一条直线(也即当前直线的第二个端点)

  Lines(Lines.Count - 1).Point2 = e.Location

  Refresh()       '刷新窗体

End Sub

'在Form的Paint事件中绘制所有直线,每次Form1重绘时都会触发Paint事件

'PS: 也可以通过重写OnPaint方法来达到类似的效果

Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint

  e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias    '开启抗锯齿

  For Each l In Lines     '遍历所有直线

      l.Draw(e.Graphics)  '调用绘制方法,传入的参数可以理解为画布

  Next

End Sub

End Class

运行效果:


名称栏目:vb.net重绘画图 能够自动重绘图形vb
本文来源:http://chengdu.cdxwcx.cn/article/dodigoj.html