Прозрачный фон TextGadget-у
|
|
DarkDemon | Дата: Четверг, 26.01.2017, 23:19 | Сообщение # 1 |
Полковник
Группа: Друзья
Сообщений: 200
Статус: Offline
| Есть вопрос по Window9, как можно поставить TextGadget-у прозрачный фон(т.е. чтобы под текстом не закрашивалось)?
Пытаюсь и так и сяк, не могу заставить работать эту штуку. Пробовал устанавливать в RGBA разные параметры, пробовал во флаги засовывать WS_EX_TRANSPARENT. Пробовал получать хендл гаджета и делать что-то типа SetWindowLong(GadgetID(35), GWL_EXSTYLE, WS_EX_TRANSPARENT) Пробовал так SetGadgetStyle ( 35, 0, WS_EX_TRANSPARENT, 0)
Короче хз как это сделать. Просто очень не хочется возиться с теми же WindowStartDraw\FontDraw\TextDraw\StopDraw и т.д.
|
|
| |
haav | Дата: Пятница, 27.01.2017, 06:16 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Я так понял Леха у тебя классическая схема в винде? Попробуй так (первое , что пришло в голову):
Код #Include "window9.bi"
Dim As Integer iEvent,iColor Dim As HWND hw
Function GetTranspColorHwnd(hw As HWND) As Integer Dim As HDC hdc hdc = GetDC(hw) ' В GetPixel можно получать цвет по координатам рядом с гаджетом (TextGadget), ' если по координатам (1,1) в окне что-то предусматривается ' Например: GetPixel(hdc,9,10) Function = GetPixel(hdc,1,1) ReleaseDC(hw,hdc) End Function
hw = OpenWindow("1",300,10,500,500) iColor = GetTranspColorHwnd(hw) TextGadget(1,10,10,80,30,"Hello World") SetGadgetColor(1, iColor,0,1)
Do iEvent = WaitEvent() If iEvent = EventClose Then Exit Do Loop
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
DarkDemon | Дата: Пятница, 27.01.2017, 20:38 | Сообщение # 3 |
Полковник
Группа: Друзья
Сообщений: 200
Статус: Offline
| >>>Я так понял Леха у тебя классическая схема в винде?
Да все так.
Стас спасибо за решение. Я понял идею(просто не знаю откуда мне захватить прозрачный цвет, цвет формы непрозрачный), но походу вариантов кроме WindowStartDraw\...\StopDraw нету. Т.к. хотел положить ImageGadget и на нём отображать TextBox контрол, чтобы он не затирал картинку.
|
|
| |
haav | Дата: Пятница, 27.01.2017, 22:15 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата DarkDemon ( ) Стас спасибо за решение. Я понял идею(просто не знаю откуда мне захватить прозрачный цвет, цвет формы непрозрачный), но походу вариантов кроме WindowStartDraw\...\StopDraw нету. Т.к. хотел положить ImageGadget и на нём отображать TextBox контрол, чтобы он не затирал картинку.
Да, наверно лучше "ручками" рисовать в таком случае. Я бы вообще создал свой класс окна для этого и рисовал бы картинку и текст. Советую раздел 2D_DRAWA, там сглаживание шрифтов получше выглядит.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
DarkDemon | Дата: Суббота, 28.01.2017, 04:12 | Сообщение # 5 |
Полковник
Группа: Друзья
Сообщений: 200
Статус: Offline
| Всё перепробовал, но по факту пришлось использовать 2D_DRAWA.
В просто 2DDRAW есть баг библиотеки, когда загружаешь картинку, а потом начинаешь рисовать этим имаджем по созданному имаджу, то первый кадр рисует нормально, а потом всё отваливается и уже не рисует. Я сначала думал, что в моей программе ошибка, 3 раза перепроверил, опух, а потом решил протестить функции библиотеки и понял что это баг библы.
|
|
| |