Что нового

[Элементы GUI] Как конвертировать НЕХ значение цвета в визуальный цвет.

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Собственно тема и есть вопрос, как конвертировать НЕХ значение цвета в визуальный цвет и назначить его элементу GUI чтоб его было видно?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А как ты уже пробывал?
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Yashied [?]
А как ты уже пробывал?

честно говоря не как, даже понятия не имею, пытался найти поиском но поисковые запросы нечего не дали, вот и спросил нужна подсказка скажем я получаю вот так цвет и координаты (скрипт ниже), а визуально увидеть пиксель не знаю как подскажите пожалуйста.
Код:
#include <GUIConstantsEx.au3>

Dim $coord[2], $oldCoord[2]

$hGUI = GUICreate ("coord", 100, 50)
Local $label    = GUICtrlCreateLabel ("", 50, 25, 80, 25)
Local $label_1  = GUICtrlCreateLabel ("", 5, 25, 45, 25)
GUISetState()
While 1
    $coord = MouseGetPos()
    If $coord[0] <> $oldCoord[0] Or $coord[1] <> $oldCoord[1]  Then
		GUICtrlSetData ($label, $coord[0] &"x"& $coord[1])
			$oldCoord = $coord
			$color = PixelGetColor( $coord[0],$coord[1])
		GUICtrlSetData ($label_1, Hex ($color,6))
	EndIf
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
16-ричный вид числа, это тоже самое число, просто в другом визуальном представлении, т.е., например, 0xFF = 255. Поэтому ничего никуда конвертировать не нужно. Следующие две строки эквивалентны:

Код:
GUICtrlSetColor(-1, 0xFF00FF)
GUICtrlSetColor(-1, 16711935)
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Yashied [?]
Поэтому ничего никуда конвертировать не нужно.

Огромное спасибо за подсказку :beer: вот то что я хотел получить
Код:
#include <GUIConstantsEx.au3>

Dim $coord[2], $oldCoord[2]

$hGUI = GUICreate ("coord", 100, 50)
Local $label    = GUICtrlCreateLabel ("", 50, 25, 80, 25)
Local $label_1  = GUICtrlCreateLabel ("", 5, 25, 45, 25)
Local $label_2  = GUICtrlCreateLabel ("", 5, 10, 90, 10)
GUISetState()
While 1
	   $msg = GUIGetMsg()

	If $msg = $GUI_EVENT_CLOSE Then ExitLoop
	   $coord = MouseGetPos()
    If $coord[0] <> $oldCoord[0] Or $coord[1] <> $oldCoord[1]  Then
		GUICtrlSetData ($label, $coord[0] &"x"& $coord[1])
			$oldCoord = $coord
			$color = PixelGetColor( $coord[0],$coord[1])
		GUICtrlSetData ($label_1, Hex ($color,6))
		GUICtrlSetBkColor ($label_2, $color)
	EndIf
WEnd

Просто описание в справке GUICtrlSetColor - Устанавливает цвет текста элемента. немного не то что я хотел ,а GUICtrlSetBkColor я видел но поверхностно, и не понял сути этой команды, что она применима к фону любого элемента формы, я же по не опытности и невнимательности подумал что она применима только к фону всей формы :-[ .
Спасибо еще раз ваша подсказка заставила меня еще раз перечитать все команды типа GUICtrlSet и переосмыслить их :IL_AutoIt_1:
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
general66
Ещё так можно
Код:
GUICtrlSetData ($label_1, StringFormat("%06X", $color))
 

running-frag

why me?
Сообщения
441
Репутация
60
Код:
...
Local $_color = Hex (PixelGetColor (10, 10), 6)
...
GUICtrlSetColor (-1, "0x"& $_color)
 
Верх