Ĺ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
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ć.
:)