1) При использовании метода Line линия прорисовывается до последней заданной координаты, но сама последняя координата не прорисовывается.
Например (координаты в пикселах): Line (2, 2) - (2, 10) Нарисует линию с последним закрашенным пискселем по координатам 2:9, а пиксел с координатами 2:10 останется не закрашенным. (Для меня это показалось очень странным поведением).
2) У UserControl есть границы определяемые свойствами ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight, так вот если попробовать нарисовать границы вокруг контрола используя координаты этих границ, то верхняя и левая границы будут отрисованы нормально, а вот с правой и нижней выйдет облом, так как нарисованные линии уйдет за границы контрола и будут не видны, и для того, что бы они стала таки видимыми, их следует рисовать отступив от краёв на один пиксел, что тоже очень странно.
Ну, а теперь собственно вопрос. Хочу нарисовать контрол с закругленными краями, и соответственно лишние уголки нужно сделать прозрачными. Встает вопрос использования свойств MaskColor и MaskPicture. Так как контрол должен изменяться в размерах, то статическая битовая маска ну никак не подходит, и ее надо делать динамически. Для этого можно использовать такой код:
- Код: Выделить всё
...
'Ставим цвет маски, для прозрачных мест
UserControl.MaskColor = vbRed
'Рисуем маску
...
'Применяем маску
Set UserControl.MaskPicture = UserControl.Image
'Рисуем дальше
...