ďťż

Ładny brzuch

W jaki sposób mogę pobrać nazwę koloru (lub kod koloru) na podstawie współrzędnych X, Y??

Próbowałem napisać kod, ale coś mi nie wychodzi. Pewnie źle coś robię.

kolor:= Canvas.Pixels[StrToInt(Edit1.Text),StrToInt(Edit2.Text)]; Label8.Caption:=IntToStr(GetRValue(kolor))+IntToStr(GetGValue(kolor)) + IntToStr(GetBValue(kolor));

próbowałem też z:
kolor:= GetPixel( i tu to co wyżej)

W obu przypadkach wyświetla mi dane: 255255255
a przy końcówke kodu np.
Label8.Caption:=IntToStr(kolor);

wynikiem jest: -1

Już brak mi pomysłów
Użytkownik buster edytował ten post 29 kwiecień 2008, 10:59


Jak chcesz pobrac kod koloru w formacie hexowym (np. FFFFFF) to pisz (chyba tak, bo na sucho pisze):
kolor:= Canvas.Pixels[StrToInt(Edit1.Text),StrToInt(Edit2.Text)]; Label8.Caption:=IntToHex(GetRValue(kolor))+IntToHex(GetGValue(kolor)) + IntToHex(GetBValue(kolor));

nazwy sobie nie poobierzesz jakas metoda, musisz sam sobie to oprogramowac np if'ami/switch'em przyrownojac to co masz w Pixels[x][y]

a kod wysietla Ci prawidlowy w notacji dziesietnej oczywiscie (to jest kolor bialy dokladnie = clWhite), w Notacji szesnastkowej napisal Ci kolega wyzej (tlyko ja bym jeszcze dodal HexToStr, ale to jak by nie dzialalo bo Borland jest nieobliczalny czasami)

coś nie bardzo łapię o co wam dokładniej chodzi. Chcę tylko by program pokazał kokolwiek w labelu, cyfra, czy kod, liczba, to bez różnicy. Kolor ma pobierać z X, Y.

Wygląda to tak:
zrobiłem hotkey pod pobieranie współrzędnych kursora X i Y, czyli włączam program i wciskam "kropkę" i mi w label1 wpisuje np. pozycje X, a w Label2 pozycję Y.
Teraz nie wiem za bardzo jak to wykorzystać.
Słaby jestem w programowaniu, dopiero się uczę w wolnych chwilach.

Zrobiłem zmienną tcolor bo chyba taka zapisuje w sobie kolor....
następnie próbowałem przypisać zmiennej "kolor" pobranie koloru pixela z X,Y (czyli z labelów). GetPixel (to pixel wydobywa? ale jego kolor?) i chyba ma jeszcze opcję uchwytów, ale nie muszę podawać uchwytu?, wystarczy "zero" wpisać? (bo jaki uchwyt miałbym zrobić?? jak dam handle:hwnd; i dam mu FindWindow('notepad',0);, czy tam odwrotnie (0,'notepad') to będę musiał pobierać kolory z notatnika, a chcę z dowolnej aplikacji, po prostu to co pierwsze "najdzie" na x,y ;P)

Znalazłem też coś w stylu: Canvas.Pixels, z nazwy bardziej mi się podoba niż GetPixel. Próbowałem kolorowi przypisać Canvas.Pixels[x,y].....

I ostatnia rzecz. Jeśli zmienna "kolor" miałaby już pobrany kolor ze współrzędnych to trzeba by ustawić mu jako caption ten "kolor".

Jak wyzej widzieliście, nic mi dobrego z tego nie wyszło. Tak jakby z tą zmienną "kolor" było coś nie tak.

Kolega wyżej napisał

nazwy sobie nie poobierzesz jakas metoda, musisz sam sobie to oprogramowac np if'ami/switch'em przyrownojac to co masz w Pixels[x][y]
i nie bardzo rozumiem co ma na myśli.

If kolor=clRed (czy tam #8262, lub 232245255) then begin...

Niewyspany dziś jestem (za dużo grania po nocach). Może ktoś zrozumie to co napisałem i pomoże.



chyba udało się!

h:= GetWindowDC(0); kolor:= GetPixel(h,StrToInt(Edit1.Text),StrToInt(Edit2.Text)); Label8.Caption:=IntToStr(GetRValue(kolor))+IntToStr(GetGValue(kolor)) + IntToStr(GetBValue(kolor));
trzeba było uchwyt dodać i poźniej po getpixel go wklepać.
:)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •