Что нового

[Окна, Диалоги] Создание окон произвольной формы из изображений с альфа каналом

Exhale

Darkness for eternity
Сообщения
11
Репутация
0
Всем доброго времени суток!

Очень извиняюсь если я где-то не доглядел и такая тема уже была.

Ближе к делу.
Существует ли способ сделать окно программы сложной формы, где форма окна будет задаваться элементами изображения с альфа каналом? И если да, то подскажите пожалуйста наиболее грамотный способ решения этой проблемы.

Дабы быть правильно понятым - объясню подробней.
У меня есть файл с текстурами формата *.tga (формат не важен, ибо можно сконвертировать в любой подходящий), в файле присутствует альфа канал, как с полной так и с частичной прозрачностью. Задача - отрисовывать окно произвольной ширины/высоты - используя элементы элементы текстур из файла. текстура края окна не ровной формы и с внешней стороны - тень. (Файл с текстурами в идеале я потом планирую затолкать в exe'шник).

Благодарю за внимание, с нетерпением жду ответов.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Задал поиск на словосочетание "альфа канал" - получил ссылки на 6 тем на этом форуме.
 
Автор
E

Exhale

Darkness for eternity
Сообщения
11
Репутация
0
Ох... действительно... видимо я когда пытался искать по этому словосочетанию сделал ошибку... Прошу прощения, действительно нашлось, что посмотреть на тему окон.

А не подскажете случаем, как из нескольких кусков изображения в одном файле - "собрать" единый битмап для последующего вывода на экран?
К примеру в одном файле храниться текстуры 4-х углов, текстуры кусков вертикальных и горизонтальных бортиков, бэкграунд - как их определенным образом собрать в один битмап?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
$_hBitmap = _GDIPlus_BitmapCreateFromScan0( X, Y )
$_hGraphics = _GDIPlus_ImageGetGraphicsContext( $_hBitmap )

;Рисуем в нашем $_hGraphics
_GDIPlus_GraphicsDraw ... (к примеру _GDIPlus_GraphicsDrawImageRect)


Func _GDIPlus_BitmapCreateFromScan0( $iWidth, $iHeight )
	Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", $GDIP_PXF32ARGB, "ptr", 0, "int*", 0)
	If @error Then _
		Return SetError(@error, @extended, 0)

	$GDIP_STATUS = $aResult[0]
	Return $aResult[6]
EndFunc   ;==>_GDIPlus_BitmapCreateFromScan0
 
Автор
E

Exhale

Darkness for eternity
Сообщения
11
Репутация
0
Спасибо большое! Все, вопрос решен!
 
Верх