Что нового

[Элементы GUI] Не могу задать цвет фона $Graphic1

voody

Новичок
Сообщения
7
Репутация
0
Цель такова - навести мышь в произвольную область дисплея, нажать хоткей, и вывести на форму код и графическое отображение цвета пикселя под мышкой. Все работает с Label, но не с Graphic:


Код:
$Graphic1 = GUICtrlCreateGraphic(232, 30, 49, 44)
$Label6 = GUICtrlCreateLabel("                                                                                ", 32, 80, 244, 18)

Func write_mouse_pos()
	$m_pos = MouseGetPos(); получаю координаты
	$pix_color = PixelGetColor($m_pos[0], $m_pos[1]); получаю цвет в заданных координатах
	GUICtrlSetData($Edit1, $m_pos[0] & "," & $m_pos[1] & ":" & hex($pix_color, 6) & @CRLF, 1); пишу в едит инфу о пикселе
	GUICtrlSetBkColor($Graphic1, $pix_color); пытаюсь окрасить квадратик Graphic в цвет, не выходит
	GUICtrlSetBkColor($Label6, $pix_color); меняю цвет лейблы - все ОК!

EndFunc   ;==>write_mouse_pos


не могу понять, что не так делаю.. если долго жать хоткей и водить мышкой иногда вижу какие то блики цвета на Graphic.. не более
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
voody
Взял твой скрипт за основу (понятно, что он не полный), дополнил недостающим...
Работает!!! Окрашивается Graphic...

Код:
; НАЧАЛО

; Горячая клавиша [WIN]+[ALT]+[V]

 HotKeySet("#!v","write_mouse_pos")

 $GUI=GUICreate("",300,300)

 $EDIT1=GUICtrlCreateEdit("",0,0,150,300,4096+64)
 $Graphic1 = GUICtrlCreateGraphic(160, 10, 130, 80)
 $Label6 = GUICtrlCreateLabel("", 160, 100, 130, 25)

 GUISetState()

 While true

  Switch GUIGetMsg()
   Case -3
    ExitLoop
  EndSwitch
 Wend

Func write_mouse_pos()
    $m_pos = MouseGetPos(); получаю координаты
    $pix_color = PixelGetColor($m_pos[0], $m_pos[1]); получаю цвет в заданных координатах
    GUICtrlSetData($Edit1, $m_pos[0] & "," & $m_pos[1] & ":" & hex($pix_color, 6) & @CRLF, 1); пишу в едит инфу о пикселе
    GUICtrlSetBkColor($Graphic1, $pix_color); пытаюсь окрасить квадратик Graphic в цвет, не выходит
    GUICtrlSetBkColor($Label6, $pix_color); меняю цвет лейблы - все ОК!

EndFunc   ;==>write_mouse_pos

; КОНЕЦ
 
Автор
V

voody

Новичок
Сообщения
7
Репутация
0
значит вариант с "лыжи не едут" отпадает... остается "я дурак" =))
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
voody
Ты не учел третий вариант - невнимательность... ;)
 
Автор
V

voody

Новичок
Сообщения
7
Репутация
0
ты прав, твой пример работает на 100%
буду искать что в моем не так :'(


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

все равно не нашёл=(

вот для примера просто форма:

Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=d:\temp\walker\form\form1.kxf
$Form1_1 = GUICreate("Walker", 295, 441, 434, 205)
$Tab1 = GUICtrlCreateTab(0, 0, 289, 97)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("coords check")
$Label3 = GUICtrlCreateLabel("Pixel color", 22, 51, 85, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Coordinates", 6, 27, 101, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input_coords = GUICtrlCreateInput("", 110, 29, 121, 22)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Input_pixelcolor = GUICtrlCreateInput("", 110, 53, 121, 22)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Graphic1 = GUICtrlCreateGraphic(232, 30, 49, 44)
GUICtrlSetBkColor(-1, 0x124355)
$Label6 = GUICtrlCreateLabel("                                                                                ", 32, 80, 244, 18)
GUICtrlSetBkColor(-1, 0x124355)
$TabSheet2 = GUICtrlCreateTabItem("game")
$Label1 = GUICtrlCreateLabel("Shift-Q stops the program", 9, 49, 200, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
$Label2 = GUICtrlCreateLabel("Shift-S starts the program", 9, 27, 199, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
$Label5 = GUICtrlCreateLabel("Shift-A writes mouse pos. info", 9, 69, 231, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlCreateTabItem("")
$Edit1 = GUICtrlCreateEdit("", 8, 104, 281, 329)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


обратить внимание на
Код:
$Graphic1 = GUICtrlCreateGraphic(232, 30, 49, 44)
GUICtrlSetBkColor(-1, 0x124355)
$Label6 = GUICtrlCreateLabel("                                                                                ", 32, 80, 244, 18)
GUICtrlSetBkColor(-1, 0x124355)


едит окрашивается а график нет
:mad:
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
voody
Ого... Как интересно...
Как я понял, Graphic не желает располагаться на Tab...

Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=d:\temp\walker\form\form1.kxf
$Form1_1 = GUICreate("Walker", 295, 441, 434, 205)
$Tab1 = GUICtrlCreateTab(0, 0, 289, 97)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("coords check")
$Label3 = GUICtrlCreateLabel("Pixel color", 22, 51, 85, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Coordinates", 6, 27, 101, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input_coords = GUICtrlCreateInput("", 110, 29, 121, 22)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Input_pixelcolor = GUICtrlCreateInput("", 110, 53, 121, 22)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$TabSheet2 = GUICtrlCreateTabItem("game")
$Label1 = GUICtrlCreateLabel("Shift-Q stops the program", 9, 49, 200, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
$Label2 = GUICtrlCreateLabel("Shift-S starts the program", 9, 27, 199, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
$Label5 = GUICtrlCreateLabel("Shift-A writes mouse pos. info", 9, 69, 231, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlCreateTabItem("")
$Graphic1 = GUICtrlCreateGraphic(8, 104, 100, 40)
GUICtrlSetBkColor(-1, 0x124355)
$Edit1 = GUICtrlCreateEdit("", 8, 150, 281, 329)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

; Горячая клавиша [WIN]+[ALT]+[V]

 HotKeySet("#!v","write_mouse_pos")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func write_mouse_pos()
    $m_pos = MouseGetPos(); получаю координаты
    $pix_color = PixelGetColor($m_pos[0], $m_pos[1]); получаю цвет в заданных координатах
    GUICtrlSetData($Edit1, $m_pos[0] & "," & $m_pos[1] & ":" & hex($pix_color, 6) & @CRLF, 1); пишу в едит инфу о пикселе
    GUICtrlSetBkColor($Graphic1, $pix_color); пытаюсь окрасить квадратик Graphic в цвет, не выходит
    ;GUICtrlSetBkColor($Label6, $pix_color); меняю цвет лейблы - все ОК!

EndFunc   ;==>write_mouse_pos



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

voody
Так что был и четвертый вариант, который прояснился путем экспериментирования...
 
Автор
V

voody

Новичок
Сообщения
7
Репутация
0
теперь уж точно решено -)
спасибо!
 
Верх