Ĺadny brzuch
Jak sprawdzić jaki kolor (RGB) ma jakiś tam piksel, np piksel znajdujący się np. 60 pikseli na lewo i 70 na dół.
Użytkownik Capellini edytował ten post 10 marzec 2007, 20:31
np. color:= Image1.Canvas.Pixels[60,70];
Jak sprawdzić jaki kolor (RGB) ma jakiś tam piksel, np piksel znajdujący się np. 60 pikseli na lewo i 70 na dół. Jeśli ogólnie na ekranie, a nie żaden timage:GetPixel(GetWindowDC(GetDesktopWindow),100,100); // zwraca liczbę; zamiast GetDesktopWindow można dać uchwyt dowolnego oknaSkładowe możesz wyodrębnić na dwa sposoby:GetRValue(kolor), GetGValue(kolor), GetBValue(kolor)var kolor:integer; r, g, b:byte; begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16;
Użytkownik Cyrkiel edytował ten post 11 marzec 2007, 01:48
Jeśli ogólnie na ekranie, a nie żaden timage:GetPixel(GetWindowDC(GetDesktopWindow),100,100); // zwraca liczbę; zamiast GetDesktopWindow można dać uchwyt dowolnego oknaSkładowe możesz wyodrębnić na dwa sposoby:GetRValue(kolor), GetGValue(kolor), GetBValue(kolor)var kolor:integer; r, g, b:byte; begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16;
A w jakiej kolejności te kody wpisać? bo mnie coś nie działa, robię tak:
procedure TForm2.Timer1Timer(Sender: TObject); begin GetPixel(GetWindowDC(GetDesktopWindow),100,100); Label1.Caption:= IntToStr(kolor); end; procedure TForm2.FormCreate(Sender: TObject); begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16; end;
I na labelu wyświetla mi ciągle 0...
A w jakiej kolejności te kody wpisać? bo mnie coś nie działa, robię tak:
procedure TForm2.Timer1Timer(Sender: TObject); begin GetPixel(GetWindowDC(GetDesktopWindow),100,100); Label1.Caption:= IntToStr(kolor); end; procedure TForm2.FormCreate(Sender: TObject); begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16; end;
I na labelu wyświetla mi ciągle 0...
procedure TForm2.Timer1Timer(Sender: TObject); var kolor: TColor; begin kolor := GetPixel(GetWindowDC(GetDesktopWindow),100,100); //100 i 100 to są współrzędne Label1.Caption:= inttostr(getrvalue(kolor)) + inttostr(getgvalue(kolor)) + inttostr(getbvalue(kolor)); end;
To są podstawy...
a jak zrobic, aby wynik byl w postaci koloru HTML?
Bardzo prosto. Wystarczy użyć wyszukiwarki/Google/etc.
function color2html(color: tcolor): string; //w color dajesz jakiś kolor np. clBtnFace, a wynik poda Ci w stringu begin Result:='#' + IntToHex(GetRValue(color), 2) + IntToHex(GetGValue(color), 2) + IntToHex(GetBValue(color), 2); end;
var kolor:tcolor; r,g,b:byte; s:string; begin kolor:=clGray; r:=kolor; g:=kolor shr 8; b:=kolor shr 16; s:='#'+inttohex(r*65536+g*256+b,6); // s zawiera teraz kolor w formacie html
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Użytkownik Capellini edytował ten post 10 marzec 2007, 20:31
np. color:= Image1.Canvas.Pixels[60,70];
Jak sprawdzić jaki kolor (RGB) ma jakiś tam piksel, np piksel znajdujący się np. 60 pikseli na lewo i 70 na dół. Jeśli ogólnie na ekranie, a nie żaden timage:GetPixel(GetWindowDC(GetDesktopWindow),100,100); // zwraca liczbę; zamiast GetDesktopWindow można dać uchwyt dowolnego oknaSkładowe możesz wyodrębnić na dwa sposoby:GetRValue(kolor), GetGValue(kolor), GetBValue(kolor)var kolor:integer; r, g, b:byte; begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16;
Użytkownik Cyrkiel edytował ten post 11 marzec 2007, 01:48
Jeśli ogólnie na ekranie, a nie żaden timage:GetPixel(GetWindowDC(GetDesktopWindow),100,100); // zwraca liczbę; zamiast GetDesktopWindow można dać uchwyt dowolnego oknaSkładowe możesz wyodrębnić na dwa sposoby:GetRValue(kolor), GetGValue(kolor), GetBValue(kolor)var kolor:integer; r, g, b:byte; begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16;
A w jakiej kolejności te kody wpisać? bo mnie coś nie działa, robię tak:
procedure TForm2.Timer1Timer(Sender: TObject); begin GetPixel(GetWindowDC(GetDesktopWindow),100,100); Label1.Caption:= IntToStr(kolor); end; procedure TForm2.FormCreate(Sender: TObject); begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16; end;
I na labelu wyświetla mi ciągle 0...
A w jakiej kolejności te kody wpisać? bo mnie coś nie działa, robię tak:
procedure TForm2.Timer1Timer(Sender: TObject); begin GetPixel(GetWindowDC(GetDesktopWindow),100,100); Label1.Caption:= IntToStr(kolor); end; procedure TForm2.FormCreate(Sender: TObject); begin r:=kolor; g:=kolor shr 8; b:=kolor shr 16; end;
I na labelu wyświetla mi ciągle 0...
procedure TForm2.Timer1Timer(Sender: TObject); var kolor: TColor; begin kolor := GetPixel(GetWindowDC(GetDesktopWindow),100,100); //100 i 100 to są współrzędne Label1.Caption:= inttostr(getrvalue(kolor)) + inttostr(getgvalue(kolor)) + inttostr(getbvalue(kolor)); end;
To są podstawy...
a jak zrobic, aby wynik byl w postaci koloru HTML?
Bardzo prosto. Wystarczy użyć wyszukiwarki/Google/etc.
function color2html(color: tcolor): string; //w color dajesz jakiś kolor np. clBtnFace, a wynik poda Ci w stringu begin Result:='#' + IntToHex(GetRValue(color), 2) + IntToHex(GetGValue(color), 2) + IntToHex(GetBValue(color), 2); end;
var kolor:tcolor; r,g,b:byte; s:string; begin kolor:=clGray; r:=kolor; g:=kolor shr 8; b:=kolor shr 16; s:='#'+inttohex(r*65536+g*256+b,6); // s zawiera teraz kolor w formacie html