Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6: Прозрачная метка на прозрачном юзерконтроле / 15 сообщений из 15, страница 1 из 1
11.04.2010, 17:21
    #36572870
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Если сделать юзерконтрол прозрачным и метку на нем прозрачную (справедливо возжелав видеть фон формы сквозь это все), то эффект превосходит все ожидания - текст метки при размещении контрола на форме перестает быть виден.

Можно ли это как-то побороть разумными усилиями?
...
Рейтинг: 0 / 0
12.04.2010, 11:36
    #36573625
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Отказаться от меток, а текст писать с помощью Print.
...
Рейтинг: 0 / 0
12.04.2010, 11:56
    #36573677
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Antonariy,

Дык тот же эффект - ничего не видно. Метка же - неоконный контрол, и внутри него, как я понимаю, тот же принт.
...
Рейтинг: 0 / 0
12.04.2010, 13:07
    #36573913
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Мало ли, что там внутри. Print — операция чисто графическая, а отрисовка даже безоконного контрола — нет.
Добавь в проект пустой юзерконтрол.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub UserControl_Initialize()
    UserControl.BackStyle = vbTransparent
    UserControl.MaskColor = RGB( 255 ,  0 ,  255 )
    UserControl.BackColor = RGB( 255 ,  0 ,  255 )
    UserControl.AutoRedraw = True
End Sub

Private Sub UserControl_Show()
    Print "Label1"
    UserControl.MaskPicture = UserControl.Image
End Sub

Jah loves you.
...
Рейтинг: 0 / 0
12.04.2010, 13:10
    #36573927
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
RGB(255, 0, 255) можно уверенно заменить на vbMagenta или другой любимый кислотный цвет.
...
Рейтинг: 0 / 0
12.04.2010, 13:16
    #36573952
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Кстати не вижу смысла в этих плясках. Прозрачный юзерконтрол может быть только графическим, перерисовывающим себя в ответ на действия пользователя, любые другие контролы в нем будут невидимы.

В полный рост я это делал в нижеприложенном проекте, от которого потом отказался.

Jah loves you.
...
Рейтинг: 0 / 0
12.04.2010, 13:19
    #36573964
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
AntonariyКстати не вижу смысла в этих плясках. Прозрачный юзерконтрол может быть только графическим, перерисовывающим себя в ответ на действия пользователя, любые другие контролы в нем будут невидимы.

А вот это высказывание не понял.
Кнопка или поле на нем вполне видны и никуда не деваются.
...
Рейтинг: 0 / 0
12.04.2010, 13:24
    #36573977
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
А, точно. Видимо по какой-то другой причине они у меня когда-то пропадали.
...
Рейтинг: 0 / 0
12.04.2010, 13:29
    #36573997
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
А как задавать точное место для вывода командой Print? Что-то в описании команды на эту тему ничего не сказано, а с графикой на форме работать не приходилось.

И еще. В чем смысл этого присвоения?
Код: plaintext
UserControl.MaskPicture = UserControl.Image
...
Рейтинг: 0 / 0
12.04.2010, 13:42
    #36574041
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Shocker.ProА как задавать точное место для вывода командой Print?CurrentX/Y
Shocker.ProВ чем смысл этого присвоения?В Image происходит отрисовка действий типа Print, PaintPicture, Line и т.п., а MaskPicture задает картинку с маской, которая будет фоном. Маска — области цвета, заданного свойством MaskColor, они будут вырезаны. Смысл присвоения — мы сами рисуем и устанавливаем картинку-маску, а не определяем ее в дизайн-тайме. С тем же успехом можно рисовать в какой-нибудь посторонней Picture1 и делать UserControl.MaskPicture = Picture1.Image.

Jah loves you.
...
Рейтинг: 0 / 0
12.04.2010, 13:47
    #36574054
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Дык ведь UserControl.Image по идее Nothing, я ж его не программирую заранее
...
Рейтинг: 0 / 0
12.04.2010, 13:56
    #36574082
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Image это фон, картинка, она не бывает Nothing.

Jah loves you.
...
Рейтинг: 0 / 0
12.04.2010, 14:00
    #36574093
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
А, то бишь
Код: plaintext
UserControl.BackColor = RGB(255, 0, 255)
создает эту картинку?
...
Рейтинг: 0 / 0
12.04.2010, 14:04
    #36574097
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
Она изначально есть. Окно формы создается с hDC, при BackColor просто происходит заливка.

Jah loves you.
...
Рейтинг: 0 / 0
12.04.2010, 14:07
    #36574105
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6: Прозрачная метка на прозрачном юзерконтроле
А, ну теперь понятно, как вся эта конструкция работает. Спасибо.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6: Прозрачная метка на прозрачном юзерконтроле / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]