Что нового

Использовать png картинки в GUI

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Подскажите пожалуйста, можно ли в GUI форму заливать картинки в PNG формате?
Если да, то как?
Интересуюсь, т.к. нужно сделать прозрачный фон.
Сейчас пользуюсь функцией
Код:
_WinAPI_SetLayeredWindowAttributes($Form, $color, 255)

И bmp файлы делаю прозрачными через фотошоп. Но это немного не удобно.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Что значит "заливать картинки в PNG формате"? Окно в виде PNG? PNG на форме? Или может быть что-то еще? Хорошо бы для наглядности выложить скриншот.
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Ок, приведу пример.
Вот сделал вот такую GUI форму,

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Form2", 600, 480, -1, -1, -1,  BitOR ($WS_EX_LAYERED,$WS_EX_CONTROLPARENT))
$Pic1 = GUICtrlCreatePic("images\fond.bmp", 0, 0, 600, 480)
GUICtrlSetState($Pic1, $GUI_DISABLE)
GUISetBkColor(0xABCDEF)
$Button5 = GUICtrlCreateButton("Button5", 32, 408, 195, 41, BitOR($BS_DEFPUSHBUTTON,$BS_BITMAP,$WS_BORDER))
GUICtrlSetImage(-1, "images\IE.bmp", -1, 0)
$Button_setting = GUICtrlCreateButton("set", 486, 0, 25, 19, $BS_BITMAP)
GUICtrlSetImage(-1, "images\setting.bmp", -1)
$Button_MINIMIZE = GUICtrlCreateButton("hide", 512, 0, 23, 19, $BS_BITMAP)
GUICtrlSetImage(-1, "images\hide.bmp", -1)
$Button_CLOSE = GUICtrlCreateButton("close", 536, 0, 40, 19, $BS_BITMAP)
GUICtrlSetImage(-1, "images\close.bmp", -1)
_WinAPI_SetLayeredWindowAttributes($Form2, 0xABCDEF, 255)
GUISetStyle($WS_POPUP, -1, $Form2)
GUISetStyle($WS_POPUP, -1, $Form2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Button_CLOSE
			Exit
		 Case $Button_MINIMIZE
			GUISetState(@SW_MINIMIZE)
	EndSwitch
WEnd



А png картинку хочу наложить в выделенном месте. Картинка должна быть произвольной формы, и без заднего фона.
Т.е. где используется
Код:
GUICtrlSetImage(-1, "images\setting.bmp", -1)
вместо bmp использовать png формат.
Использовать хочу как кнопку.

В общем как то так...
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Аналогичный вопрос сейчас обсуждается в этой теме. Прочитайте, там есть все ответы и примеры, интересующие вас.
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Спасибо, я думаю это мне подойдет.
И если можно, подскажите, где найти описание к:
Код:
#Include "Skin.au3"

Хочу понять на что влияет третий (49) и четвертый (43) параметр вот этой функции:
Код:
$Button2 = _Skin_AddButton(94 - 15, 22 - 12, 49, 43, _WinAPI_LoadImage(0, '2.bmp', 0, 0, 0, 0x0010), _WinAPI_LoadImage(0, '4.bmp', 0, 0, 0, 0x0010), _WinAPI_LoadImage(0, '6.bmp', 0, 0, 0, 0x0010))


Как не изменял его, визуального эффекта не заметил.
А так же, что дает вот эта функция:
Код:
_Skin_Helper($hForm)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
JIereHga2010 сказал(а):
И если можно, подскажите, где найти описание к:
Код:
#Include "Skin.au3"

Описания нет, т.к. эту библиотеку я писал специально для своих проектов и, соответственно, не документировал.

JIereHga2010 сказал(а):
Хочу понять на что влияет третий (49) и четвертый (43) параметр вот этой функции:
Код:
$Button2 = _Skin_AddButton(94 - 15, 22 - 12, 49, 43, _WinAPI_LoadImage(0, '2.bmp', 0, 0, 0, 0x0010), _WinAPI_LoadImage(0, '4.bmp', 0, 0, 0, 0x0010), _WinAPI_LoadImage(0, '6.bmp', 0, 0, 0, 0x0010))

Первые четыре параметра задают смещение по горизонтали ($iX), смещение по вертикали ($iY), ширину ($iWidth) и высоту ($iHeight) кнопки, соответственно. Для правильной работы функции ширина и высота кнопки должны соответствовать размерам изображения. Последние три параметра определяют HBITMAP для каждого из трех состояний кнопки - отжата, подсвечена, нажата. Причем, указывать 0 для какого-либо состояния не допускается. Если, например, подсветка кнопок не требуется, то в шестом параметре нужно указать такой же HBITMAP, что и в пятом параметре.

JIereHga2010 сказал(а):
А так же, что дает вот эта функция:
Код:
_Skin_Helper($hForm)

Это, так сказать, основа библиотеки - обработчик для всех созданных кнопок. _Skin_Helper() нужно поместить в основной цикл GUI в любом месте или в крайнем случае вызывать в AdlibRegister() с минимальной задержкой. В качестве параметра нужно передать хендл окна, в котором были созданы кнопки, или 0 (по умолчанию). Это влияет на поведение кнопок, когда основное окно программы находится не в фокусе. В большинстве случаев указывается хендл основного окна.

ВАЖНО. После уничтожения окна, если на этом скрипт не заканчивает свою работу, необходимо вызвать _Skin_Destroy() для освобождения внутренних ресурсов библиотеки.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
OffTopic:
Yashied [?]
эту библиотеку я писал специально для своих проектов
Yashied, Вы не думали о развитии Skin UDF в полномасштабную библиотеку?
 
Верх