Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установка png с alpha каналом на Button 
:(
    Опции темы
piritus
Дата 26.8.2009, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Здравствуйте. 
Пробовал на окно установить png с alpha каналом - получилось.
А на кнопку не получается, т.е. прозрачные обласни закрашиваются черным цветом.
Кнопка имеет WS_CHILD, а с ним WS_EX_LAYERED не совмещается.

Подскажите, как установить на кнопку png - изображение с альфа-каналом?

--------------------
PM MAIL ICQ   Вверх
Andrey44
Дата 26.8.2009, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Цитата(piritus @  26.8.2009,  00:56 Найти цитируемый пост)
Подскажите, как установить на кнопку png - изображение с альфа-каналом?
Покажите как делаете вы.



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
piritus
Дата 26.8.2009, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Вобще на асме, но думаю это не столь важно:
Код

        invoke LoadPng,2,addr pngSize
        mov hBitmap,eax
        push pngSize.dWidth
        pop winSize.dWidth
        push pngSize.dHeight
        pop winSize.dHeight

        invoke GetDC,0
        mov hScreenDC,eax
        invoke CreateCompatibleDC,hScreenDC
        mov hMemDC,eax
        invoke SelectObject,eax,hBitmap
        mov hOldBmp,eax
        invoke CreateCompatibleDC,hScreenDC
        mov hMemDC2,eax
        invoke CreateCanvas,hMemDC2,pngSize.dWidth,pngSize.dHeight
        mov hBitmap2,eax
        invoke SelectObject,hMemDC2,hBitmap2
        mov hOldBmp2,eax
                
        invoke SetWindowLong,hWnd,GWL_EXSTYLE,WS_EX_LAYERED
        invoke GetModuleHandle,CTEXT("User32")
        invoke GetProcAddress,eax,CTEXT("UpdateLayeredWindow")
        .if eax==NULL
            invoke MessageBox,hWnd,CTEXT("Couldn't find UpdateLayeredWindow API. You need Windows XP or 2000 to run this program."),0,MB_OK
            invoke SendMessage,hWnd,WM_CLOSE,0,0
        .endif
        mov pUlw,eax
        
        invoke BitBlt,hMemDC2,0,eax,pngSize.dWidth,pngSize.dHeight,hMemDC,0,0,SRCCOPY
;        invoke FadeBitmap,hBitmap2
        
        push ULW_ALPHA
        push offset blender
        push 0
        push offset ptZero
        push hMemDC2
        push offset winSize
        push NULL
        push hScreenDC
        push hWnd
        mov eax,pUlw
        call eax


--------------------
PM MAIL ICQ   Вверх
Andrey44
Дата 26.8.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Ну по-моему пнг с альфа каналом надо рисовать через GDI+
Или я не прав? smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
piritus
Дата 26.8.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Вот пример применения этого кода для диалога без WS_CHILD:
user posted image

а вот с WS_CHILD:
user posted image

Кнопка имеет стиль WS_CHILD и поэтому получается:
user posted image

Там где черная обводка вокруг кнопки, должно быть прозрачно.
Вот. Можно ли для кнопки что-нибудь придумать, что бы как на первой картинке?
--------------------
PM MAIL ICQ   Вверх
NeoRus
Дата 26.8.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 13.5.2007
Где: Россия

Репутация: нет
Всего: нет



могу ошибаться, но почему бы не вырезать кнопку по региону, обрезав червый цвет ?
PM MAIL   Вверх
piritus
Дата 27.8.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



можно пример?
кнопка может быть еще круглой...
--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1059 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.