Что нового

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

AZJIO

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

Yashied

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

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
 

CreatoR

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

Код:
#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 752
Репутация
1 149
С API прозрачность иконки подерживается, но библиотеки добавлять приходится.

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

Yashied

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

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