Visual Basic .NET Language
GDI +
Поиск…
Создать графический объект
Существует три способа создания графического объекта
- Из события Paint
Каждый раз, когда элемент управления перерисовывается (изменяется, обновляется ...) это событие вызывается, используйте этот способ, если вы хотите, чтобы элемент управления последовательно рисовал элемент управления
'this will work on any object's paint event, not just the form
Private Sub Form1_Paint(sender as Object, e as PaintEventArgs) Handles Me.Paint
Dim gra as Graphics
gra = e.Graphics
End Sub
- Создать графику
Это чаще всего используется, когда вы хотите создать однократную графику в элементе управления, или вы не хотите, чтобы элемент управления перерисовывался
Dim btn as New Button
Dim g As Graphics = btn.CreateGraphics
- Из существующей графики
Используйте этот метод, когда хотите рисовать и изменять существующую графику
'The existing image can be from a filename, stream or Drawing.Graphic
Dim image = New Bitmap("C:\TempBit.bmp")
Dim gr As Graphics = Graphics.FromImage(image)
Рисовать фигуры
Чтобы начать рисовать фигуру, вам нужно определить объект пера. Pen
принимает два параметра:
- Цвет ручки или кисть
- Ширина пера
Объект Pen используется для создания контура объекта, который вы хотите нарисовать
После определения Pen вы можете установить определенные свойства пера
Dim pens As New Pen(Color.Purple)
pens.DashStyle = DashStyle.Dash 'pen will draw with a dashed line
pens.EndCap = LineCap.ArrowAnchor 'the line will end in an arrow
pens.StartCap = LineCap.Round 'The line draw will start rounded
'*Notice* - the Start and End Caps will not show if you draw a closed shape
Затем используйте созданный вами графический объект, чтобы нарисовать фигуру
Private Sub GraphicForm_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
Dim pen As New Pen(Color.Blue, 15) 'Use a blue pen with a width of 15
Dim point1 As New Point(5, 15) 'starting point of the line
Dim point2 As New Point(30, 100) 'ending point of the line
e.Graphics.DrawLine(pen, point1, point2)
e.Graphics.DrawRectangle(pen, 60, 90, 200, 300) 'draw an outline of the rectangle
По умолчанию ширина пера равна 1
Dim pen2 as New Pen(Color.Orange) 'Use an orange pen with width of 1
Dim origRect As New Rectangle(90, 30, 50, 60) 'Define bounds of arc
e.Graphics.DrawArc(pen2, origRect, 20, 180) 'Draw arc in the rectangle bounds
End Sub
Заполнить фигуры
Graphics.FillShapes рисует форму и заполняет ее цветом. Заполнить фигуры можно использовать
Инструмент «
Brush
- для заполнения формы сплошным цветомDim rect As New Rectangle(50, 50, 50, 50) e.Graphics.FillRectangle(Brushes.Green, rect) 'draws a rectangle that is filled with green e.Graphics.FillPie(Brushes.Silver, rect, 0, 180) 'draws a half circle that is filled with silver
Инструмент
HatchBrush
- для заполнения формы шаблоном
Dim hBrush As New HatchBrush(HatchStyle.ZigZag, Color.SkyBlue, Color.Gray)
'creates a HatchBrush Tool with a background color of blue, foreground color of gray,
'and will fill with a zigzag pattern
Dim rectan As New Rectangle(100, 100, 100, 100)
e.Graphics.FillRectangle(hBrush, rectan)
LinearGradientBrush
- для заполнения формы градиентомDim lBrush As New LinearGradientBrush(point1, point2, Color.MediumVioletRed, Color.PaleGreen) Dim rect As New Rectangle(50, 50, 200, 200) e.Graphics.FillRectangle(lBrush, rect)
TextureBrush
- заполнять фигуру изображением
Вы можете выбрать изображение из ресурсов, уже определенного Bitmap или из имени файла
Dim textBrush As New TextureBrush(New Bitmap("C:\ColorPic.jpg"))
Dim rect As New Rectangle(400, 400, 100, 100)
e.Graphics.FillPie(textBrush, rect, 0, 360)
Как Hatch Brush Tool
LinearGradientBrush
Hatch Brush Tool
и LinearGradientBrush
импортируют следующее заявление: Imports System.Drawing.Drawing2D
Текст
Чтобы нарисовать текст в форме, используйте метод DrawString
Когда вы рисуете строку, вы можете использовать любую из четырех кистей, перечисленных выше.
Dim lBrush As New LinearGradientBrush(point1, point2, Color.MediumVioletRed, Color.PaleGreen)
e.Graphics.DrawString("HELLO", New Font("Impact", 60, FontStyle.Bold), lBrush, New Point(40, 400))
'this will draw the word "Hello" at the given point, with a linearGradient Brush
Поскольку вы не можете определить ширину или высоту текста, используйте Measure Text
для проверки размера текста
Dim lBrush As New LinearGradientBrush(point1, point2, Color.MediumVioletRed, Color.PaleGreen)
Dim TextSize = e.Graphics.MeasureString("HELLO", New Font("Impact", 60, FontStyle.Bold), lBrush)
'Use the TextSize to determine where to place the string, or if the font needs to be smaller
Пример: вам нужно нарисовать слово «Тест» поверх формы. Ширина формы - 120. Используйте этот цикл, чтобы уменьшить размер шрифта, пока он не поместится в ширину форм
Dim FontSize as Integer = 80
Dim TextSize = e.graphics.measeString("Test", New Font("Impact",FontSize, FontStyle.Bold), new Brush(colors.Blue, 10)
Do while TextSize.Width >120
FontSize = FontSize -1
TextSize = e.graphics.measeString("Test", New Font("Impact",FontSize, FontStyle.Bold), new Brush(colors.Blue, 10)
Loop