Войти

Показать полную графическую версию : [решено] Цвет фона иконки


morgan1991
13-12-2022, 00:15
Доброго времени суток.
Возникла следующая проблема.
Необходимо в окне Gui в определенной области изменить цвет фона и вставить поверх иконку.
Сделал так: вставил пустой Lable с нужным размером и цветом. Поверх вставил иконку. Все отлично, НО у иконки вокруг картинки фон цвета основного цвета окна. А мне нужно что-бы цвет был как у лэйбла.
Можно создать дочернее окно вместо lable нужного цвета, тогда все ок. Но необходимо настроить зависимость при изменении размера родительского окна и при его перемещении, перемещать дочернее. Но это может сказаться при нагруженной машине.
Помогите пожалуйста.
#include <guiconstants.au3>

GUICreate("", 300, 300)
GUICtrlCreateLabel("", 0, 0, 300, 100)
GUICtrlSetBkColor(-1, 0x000000)

GUICtrlCreateIcon("imageres.dll", 2, 10, 5, 50, 50)
GUICtrlSetBkColor(-1, 0x000000) ;НЕ работает
GUICtrlSetColor(-1, 0x000000) ;НЕ работает

GUISetState()


While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd

morgan1991
14-12-2022, 16:48
Вопрос закрыт. Решение с Русского сообщества:

#AutoIt3Wrapper_Run_AU3Check=n ;Пропускать предупреждения при сборке

#include <GDIPlus.au3>
#include <Icons.au3>
GUICreate('',300,300)
GUICtrlCreateLabel('',0,0,300,100)
GUICtrlSetBkColor(-1,0x000000)
_Set_Icn_Alfa('imageres.dll',1,10,5,50)
_Set_Icn_Alfa('imageres.dll',100,60,5,50)
_Set_Icn_Alfa('imageres.dll',101,110,5,50)
GUISetState()

While 1
If -3=GUIGetMsg()Then Exit
WEnd

Func _Set_Icn_Alfa($sFile,$n,$iX,$iY,$k)
Local $ID=GUICtrlCreatePic('',$iX,$iY,$k,$k)
Local $hIcon=_Icons_Icon_Extract($sFile,$n,$k,$k)
Local $hBitmap=_Icons_Bitmap_CreateFromIcon($hIcon)
Local $0=_SetHImage($ID,$hBitmap)+_WinAPI_DeleteObject($hBitmap)+_WinAPI_DestroyIcon($hIcon)
Return $ID
EndFunc

Источник (https://autoit-script.ru/threads/cvet-fona-ikonki.28854/#post-158208)




© OSzone.net 2001-2012