Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z kodem. Czytanie koloru pola


Gość

Rekomendowane odpowiedzi

Opublikowano

Siema.

W dużym skrócie chodzi o pole graficzne i jego kolor.

Chciałbym zrobić funkcję zapisującą mi kolory poszczególnych pól do pliku, a nie mogę znaleźć funkcji, która by mi to umożliwiała. Czy ma ktoś może jakieś pomysły ?
Załączam swój kod :D



#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <StaticConstants.au3>

$h=GUICreate("Plansza",405,445)

$obramowanie =guictrlcreatebutton("Obramowanie",5,410)
$czysc =guictrlcreatebutton("Czyść",80,410)
GUICtrlSetDefBkColor ( 0xFFFFFF)
global $grap[257]
$i=1
$x=5
$y=5
Do

 $grap[$i]=guictrlcreategraphic($x,$y,20,20)
  $x+=25
  if mod($i,16)=0 then
     $x=5
     $y+=25
     EndIf
$i+=1
   until $i=257

GUISetState(1,$h)
do
     $i=1
   $msg=guigetmsg()
   if $msg=$obramowanie then obramowanie()
   if $msg=$czysc then czysc()
   Do

  if $msg=$grap[$i] then guiregistermsg($grap[$i],kolor($msg))
  $i+=1
  until $i=257

  Until  $msg = $GUI_EVENT_CLOSE









func obramowanie()
local $tmp=1
do
     guictrlsetbkcolor($grap[$tmp],0x000000)
     $tmp+=240
      guictrlsetbkcolor($grap[$tmp],0x000000)
       $tmp-=240
$tmp+=1
until $tmp=17
$tmp=1
do
     guictrlsetbkcolor($grap[$tmp],0x000000)
     $tmp+=15
     guictrlsetbkcolor($grap[$tmp],0x000000)
     $tmp-=15
$tmp+=16
until $tmp>241
   EndFunc

func czysc()
   local $i=1
   Do
   guictrlsetbkcolor($grap[$i],0xFFFFFF)
   $i+=1
   until $i=257
   EndFunc

  func kolor($msg)

    if pixelgetcolor(mousegetpos(0),mousegetpos(1))=0xFFFFFF then

      guictrlsetbkcolor($msg,0x000000)
   else
      guictrlsetbkcolor($msg,0xFFFFFF)
EndIf

     EndFunc

 

Opublikowano

Tak właśnie przeczuwałem :/ Nie ma żadnej funkcji do czytania tego (po za pixelgetcolor) ?

Opublikowano

No ale w czym masz problem? Pixelgetcolor pobiera, iniwrite zapisuje, wystarczy że zrobisz prostą tablicę kilkuelementową i masz zapisane dane z kilku punktów. Dalej robisz co chcesz możesz przecież odczytać iniread 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

A gdy przeniosę okno w inne miejsce, funkcja pixelgetcolor sczyta mi kolory pixeli po za tablicą.

Opublikowano

A jakie to ma znaczenie skoro funkcji odczytu można użyć w konkretnym oknie , to już twój problem że zrobiłeś wszystkie koordynaty względem pulpitu a nie okna aplikacji 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Zrobiłem jak radziłeś. Jest ok.
Meczy mnie jeszcze pytanie, jak można użyć funkcji pixelgetcolor względem okna aplikacji ? Żeby brało np x=5,y=5 z okna, a nie z ekranu?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...