Шрифт:
myBitmap.Height - 1)
'Создать сплошную кисть
Dim myBrush As System.Drawing.Brush
'-----------------------
'Нарисовать текст кистью
'-----------------------
myBrush = New System.Drawing.SolidBrush( _
System.Drawing.Color.Black)
'Примечание: мы используем объект Font из формы
myGfx.DrawString("Привет!", Me.Font, myBrush, 2, 10)
'------------------------------
'Важно! Очистить все после себя
'------------------------------
myGfx.Dispose
myPen.Dispose
myBrush.Dispose
'-------------------------------------------------------------------
'Указать объекту pictureBox, на необходимость отображения растрового
'изображения, которое мы только что создали и нарисовали.
'-------------------------------------------------------------------
PictureBox1.Image = myBitmap
End Sub
Листинг 11.7. Создание объекта Graphics для формы
'----------------------------------------------------------
'Создает объект Graphics для формы и осуществляет рисование
'----------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'Создать объект Graphics для формы
Dim myGfx As System.Drawing.Graphics
myGfx = Me.CreateGraphics
'Создать кисть
Dim myBrush As System.Drawing.Brush
myBrush = New System.Drawing.SolidBrush( _
System.Drawing.Color.DarkGreen)
'Заполнить прямоугольник
myGfx.FillRectangle(myBrush, 4, 2, 60, 20)
'-------------------------
'Важно: Выполнить очистку!
'-------------------------
myBrush.Dispose
myGfx.Dispose
End Sub
Листинг 11.8. Подключение к функции Paint формы
'Кисти, которые мы хотим кэшировать, чтобы избавить себя от необходимости
'все время создавать их и уничтожать
Private m_brushBlue As System.Drawing.Brush
Private m_brushYellow As System.Drawing.Brush
'Ради интереса подсчитаем, сколько раз осуществлялся вызов
Private m_paintCount As Integer
'-----------------------------------------------------------------------------
'Мы перекрываем обработчики событий Paint наших базовых классов. Это означает,
'что каждый раз, когда форма вызывается для перерисовки самой себя, будет
'вызываться эта функция.
'-----------------------------------------------------------------------------
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
'ВАЖНО: Вызвать базовый класс и дать ему возможность
'выполнить всю необходимую работу по рисованию
MyBase.OnPaint(e)
'Увеличить на 1 значение счетчика вызовов
m_paintCount = m_paintCount + 1
'--------------------------------------------------------------------------
'Важно:
'Вместо того чтобы создавать объект Graphics, мы получаем его
'на время данного вызова. Это означает, что освобождать память путем вызова
'метода .Dispose объекта - не наша забота