Прозрачный PictureBox
Изначально этот контрол имеет прозрачный фон и при запуске программы не виден на экране (как контрол Image). На нем можно рисовать такими операторами, как Line, Pset, Circle. Так как контрол реализует прозрачность, то в нем определен прозрачный цвет равный -1. Т.е. Вы можете закрасить этот контрол каким-либо цветом, а затем рисовать на нем прозрачные линии.
Работа с графикой несколько медленней, чем в обычном PictureBox. Для ее ускорения Вы можете присвоить свойству EnabledRefresh значение False. Тогда все что Вы нарисовали появится на экране только после того, как Вы воспользуетесь методом Refresh.
Теперь рассмотрим методы, появившиеся в этом контроле.
PaintPicture(Picture As StdPicture, X1 As Integer, Y1 As Integer, _
X2 As Integer, Y2 As Integer, Width As Integer, Height As Integer, _
[TranspColor], [Opcode])
Этот метод аналогичен одноименному методу в PictureBox, но добавлено свойство TranspColor. Этот параметр указывает, какой цвет на копируемой картинке сделать прозрачным. Использование данного параметра несколько замедляет работу данного метода.
Свойства GetPicture и GetMaskPicture возвращают соответственно изображение и маску данного контрола.
Свойство GetImage(TransparentColor as Long) возвращает изображение данного контрола, где TransparentColor - цвет который примут прозрачные точки.
Функция
GetMaskAndPicture GetMaskAndPicture (X As Integer, Y As Integer, _
Width As Integer, Height As Integer) As MaskAndPicture
возвращает изображение и маску указанного участка на контроле. Например:
Dim MaskAndPicture As MaskAndPicture
Set MaskAndPicture = TranspPicture1.GetMaskAndPicture(0, 0, 100, 100)
Picture1.Picture = MaskAndPicture.Picture
Picture2.Picture = MaskAndPicture.MaskPicture
Процедура
SetMaskAndPicture(MaskAndPicture As MaskAndPicture, X1 As Integer, Y1 As Integer, _
X2 As Integer, Y2 As Integer, Width As Integer, Height As Integer)
размещает изображение и маску, на контроле, где X1, Y1 - координаты левого верхнего угла, куда поместиться изображение, X2, Y2, Width, Height - положение и размер участка картинки на изображении-источнике.
Методы GetMaskAndPicture и SetMaskAndPicture удобно использовать попарно для переноса изображения с одного прозрачного PictureBox на другой:
TranspPicture2.SetMaskAndPicture _
TranspPicture1.GetMaskAndPicture(50, 50, 100, 100), _
50, 50, 0, 0, 100, 100