Kezdőoldal » Számítástechnika » Programozás » C++ nyelven Codeblocks-al...

C++ nyelven Codeblocks-al hogyan lehet megcsinálni, hogy az egér egy kiválasztott színű pixelre kattintson?

Figyelt kérdés

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;

}

}

}


2011. dec. 25. 15:57
 1/1 anonim ***** válasza:

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]

2011. dec. 28. 22:14
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!