Witam. Mam taki problem. Próbuje stworzyć aplikację, która po naciśnięciu przycisku button wykonuje skan RGB wybranego piksela pulpitu, a następnie podświetla na otrzymany kolor określony Panel w tej aplikacji.
Kod wygląda tak (dla buttona, nic innego nie robiłem oprócz wstawienia tych elementów na zasadzie przeciągnięcia)
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int pixelX, pixelY;
HWND subWindow = FindWindow(NULL, TEXT("Profile Setting"));
pixelX = 73;
pixelY = 148;
SetForegroundWindow(subWindow);
HDC hdc = GetDC(subWindow);
COLORREF color = GetPixel(hdc, pixelX, pixelY);
BYTE redValue, greenValue, blueValue;
redValue = GetRValue(color);
greenValue = GetGValue(color);
blueValue = GetBValue(color);
Label1->Caption=redValue;
Label2->Caption=greenValue;
Label3->Caption=blueValue;
TColor kolor1;
kolor1=RGB(redValue,greenValue,blueValue);
Panel1->Caption="";
Panel1->Color=kolor1;
}
//---------------------------------------------------------------------------
Wszystko ładnie pięknie, tylko mam takie problemy, których nie umiem przeskoczyć:
-
Chciałbym aby po naciśnięciu przycisku button, kod był wykonywany przynajmniej 15 razy na sekundę. Umieszczałem już kod w pętlach, ale to tylko zawieszało program ;/ To w sumie jest problem nr 1.
-
Chciałbym sczytywać informację RGB z kilku pix, np z określonego prostokąta na ekranie, załóżmy zaczynającego się w (0,0)pix a kończącego na (300,200)pix.
Pozdrawiam i z z góry dziękuję za pomoc i wyrozumiałość dla początkującego.