Что нового

Нужна иконка с текстом на кнопке с коротким отступом

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
На страничке autoitscript.com увидел пример с использованием иконки и текста на кнопке, но интервал между иконкой и текстом слишком большой. Чтобы иконки и текст не казались на краях кнопки, нужно увеличить кнопку практически вдвое.
 

Yashied

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

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Можно так:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("_GUICtrlCreateButtonEx")
$aButton = _GUICtrlCreateButtonEx("Click Me here", 50, 80, -1, 30, "shell32.dll", -5)

GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $aButton[1]
			;
	EndSwitch
WEnd

Func _GUICtrlCreateButtonEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0)
	Local $aRetArr[2]
	
	$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 5, $iTop + (($iHeight - 16) / 2), 16, 16)
	GUICtrlSetState(-1, $GUI_DISABLE)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	
	$aRetArr[1] = GUICtrlCreateButton("       " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight, $WS_CLIPSIBLINGS)
	
	Return $aRetArr
EndFunc



Добавлено:
Сообщение автоматически объединено:

Ну или используя API:

Код:
#include <GUIConstantsEx.au3>
#include <GUIButton.au3>
#include <GUIImageList.au3>

GUICreate("_GUICtrlCreateButtonEx", 510, 400)

Global $hImageList = _GUIImageList_Create(16, 16, 5)

_GUICtrlCreateButtonEx("Button1", 10, 10,70, 20, "shell32.dll", -5)

GUISetState()

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

Func _GUICtrlCreateButtonEx($sText, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $sIconFile = "", $iIconIndex = 0)
	Local $nButton = GUICtrlCreateButton($sText, $iLeft, $iTop, $iWidth, $iHeight)
	_GUIImageList_AddIcon($hImageList, $sIconFile, $iIconIndex)
	_GUICtrlButton_SetImageList($nButton, $hImageList)
	Return $nButton
EndFunc
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
С API прозрачность иконки подерживается, но библиотеки добавлять приходится.

Ещё бы не плохо при увеличении длинны кнопки справа и слева одинаковое увеличение отступа, а между иконкой и текстом тоже увеличение, но промежуток в два раза меншьший правому оступу. Так будет смотрется правильно при увеличении размера кнопки.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
AZJIO сказал(а):
С API прозрачность иконки подерживается, но библиотеки добавлять приходится.

Ещё бы не плохо при увеличении длинны кнопки справа и слева одинаковое увеличение отступа, а между иконкой и текстом тоже увеличение, но промежуток в два раза меншьший правому оступу. Так будет смотрется правильно при увеличении размера кнопки.

Если вычислять расстояния, то придется задействовать как минимум WinAPI.au3...
 
Верх