C++ nyelven Codeblocks-al hogyan lehet megcsinálni, hogy az egér egy kiválasztott színű pixelre kattintson?
Azt szeretném elérni hogy ha pl. egy narancssárga pixel előjön a kijelzőn akkor a program arra kattintson vagy legalább a pixel fölé vigye az egeret. Codeblocks-ban akarom megcsinálni windows operációs rendszerre. Már kaptam egy kódot itt gyakorikérdések.hu-n de a codeblocks nem tudta debugolni. Itt van a kód amit kaptam: #include <iostream>
#include <windows.h>
using namespace std;
int main()
{
HDC hDC = GetDC(HWND_DESKTOP);
COLORREF rgb;
POINT p;
//Definiáld a keresett pixel RGB színkódjait(0-255)
int defR = ...;
int defG = ...;
int defB = ...;
//Mivel a COLORREF 0x00bbggrr alakú színkódot ad
//ezért a lekérdezett színeket byte típusként kérjük le
BYTE actR, actG, actB;
//a BYTE színkódokat majd integerré castoljuk,ezekbe
//hogy a decimális értékeket hasonlítsunk össze
int actRD, actGD, actBD;
//tegyük fel,hogy tudod,hogy mekkora területen kell
//keresned ezt a területet jelöli xMin,xMax, yMin
//yMax
for(int cx = xMin; x<= xMax; cx++)
for(cy = yMin; y<=yMax; cy++)
{
p.x = cx;
p.y = cy;
//lekérdezzük az aktuális pont színkódját
rgb = GetPixel(hDC, p.x, p.y);
//szétszedjük
//hozzáteszem közvetlen is lehetne int lekérni
actR = GetRValue(rgb);
actG = GetGValue(rgb);
actB = GetBValue(rgb);
//Mehet intbe decimális érték végett
actRD = (int)actR;
actGD = (int)actG;
actBD = (int)actB;
//egyszerű összehasonlítás
if(defR == actRD && defG == actGD...)
{
SetCursorPos(p.x,p.y);
break;
}
}
}
Ki kellett egészíteni a kódot meg 1-2 hibát kijavítani, gondolom hogy csak vakon írta aki írta. Istennek sem akart fordulni a GetPixel függvényre mindig hibát írt próbáltam több fordítóval, kézzel beírni a rendszer függvény fejlécét stb mindig kötekedett, ekkora böszmeséget, megoldást megtaláltam erre a problémára : [link]
x,y koordinálta szerit megadtam hogy mekkora területen keressen amiről az xMax, xMax ,xMin, yMax változók mesélnek.
Az hogy mi a narancssárga, többféle lehet, pontos numerikus színkód érték szerint keres a program, megadtam a 0,0,0 színt azaz az abszolút feketét.
A GetPixel függvény nem valami hatékony, ezt már tudtam előre, nem hatékony pixeleket egyesével kirajzolni sem lekérdezni.
A kód: [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!