Что нового

[Элементы GUI] Кнопка без рамки

mef-t

Осваивающий
Сообщения
306
Репутация
30
Добрый день.

Есть иконки в формате png.
Хотелось бы создать кнопки в виде изображения имеющихся иконок.
Необходимо, чтобы кнопки были представлены как иконки и не имели рамок.
Формат png могу перевести в ico, но не знаю, как избавиться от рамок самой кнопки.
Просьба подсказать.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
mef-t,
Код:
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>

Global Const $b_STM_SETIMAGE = 0x0172, $b_STM_GETIMAGE = 0x0173

Global $ahPic[2] = ['\usa.png', '\ru.png'], $hImage, $hGui, $iPic, $aSize, $aMsg[2] = ['england', 'russian'], $iNum = 0

_GDIPlus_Startup()

For $i = 0 To 1
	$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & $ahPic[$i])
	If @error Then Exit $i + 1
	If Not IsArray($aSize) Then $aSize = _GDIPlus_ImageGetDimension($hImage)
	$ahPic[$i] = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
	_GDIPlus_BitmapDispose($hImage)
	$hImage = 0
	If Not $ahPic[$i] Then Exit $i + 3
Next
If Not IsArray($aSize) Then Exit 5
_GDIPlus_Shutdown()
$hGui = GUICreate('Test', 200, 200)
$iPic = GUICtrlCreatePic('', (200 - $aSize[0]) / 2, 50, $aSize[0], $aSize[1])
GUICtrlSetCursor($iPic, 0)
GUICtrlSendMsg($iPic, $b_STM_SETIMAGE, 0, $ahPic[$iNum])
GUISetState()
While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $iPic
			$iNum = Number(Not $iNum)
			$hImage = GUICtrlSendMsg($iPic, $b_STM_GETIMAGE, 0, 0)
			If $hImage Then _WinAPI_DeleteObject($hImage)
			$hImage = 0
			GUICtrlSendMsg($iPic, $b_STM_SETIMAGE, 0, $ahPic[$iNum])
			MsgBox(64, 'Info', $aMsg[$iNum], 0, $hGui)
	EndSwitch
WEnd

For $i = 0 To 1
	_WinAPI_DeleteObject($ahPic[$i])
Next

;~ From GDIP.au3
Func _GDIPlus_ImageGetDimension($hImage)
	Local $aSize[2], $aResult

	$aResult = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'hwnd', $hImage, 'float*', 0, 'float*', 0)
	If @error Then Return SetError(@error, @extended, -1)

	$GDIP_STATUS = $aResult[0]
	If $GDIP_STATUS Then Return -1

	$aSize[0] = $aResult[2]
	$aSize[1] = $aResult[3]
	Return $aSize
EndFunc   ;==>_GDIPlus_ImageGetDimension
 

Вложения

  • png.7z
    1.5 КБ · Просмотры: 29
Автор
mef-t

mef-t

Осваивающий
Сообщения
306
Репутация
30
Спасибо, не подумал использовать GUICtrlCreatePic
 
Автор
mef-t

mef-t

Осваивающий
Сообщения
306
Репутация
30
Спасибо, это я уже нашел.
 
Верх