jianoloukia Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 Καλησπερα, Θέλω να φτιάξω ένα πρόγραμμα το οποίο να λειτουργεί ως εξής,όταν ανιχνεύει το ποντίκι κάποιο συγκεκριμένο χρώμα στην οθόνη (με click ή χωρις)που θα το έχω ορίσει εγώ ,να μου ανοίγει καποια είκονα η οποία θα υπαρχει μέσα στο πρόγραμμα μου.Δηλαδή να ορίσω 10 διαφορετικά χρωματα και καθε φορά που το ποντίκι ανιχνεύει κάποιο απο αυτά ,να εμφανίζει την αντίστοιχη είκονα. υ.γ : Οι γνώσεις μου στον προγραμματισμό ειναι σε χαμηλό επίπεδο,οτι έμαθα στη σχολή.
NikosKallithea Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 Να ανιχνεύσεις χρώμα με κώδικα δεν είναι εφικτό, αυτο που μπορείς να κάνεις ειναι στο συγκεκριμένο σημείο της οθόνης που εχεις πχ το κόκκινο να πεις στον κώδικα τις συντεταγμένες του σημείου, όποτε όταν κάνεις κλικ με το ποντίκι εκει θα εχεις το αποτέλεσμα που θελεις.
jianoloukia Δημοσ. 2 Νοεμβρίου 2013 Μέλος Δημοσ. 2 Νοεμβρίου 2013 Αφού αυτο δεν ειναι εφικτό,μου έδωσες αλλη ιδέα.Αυτο που θέλω να κανω γίνετε και με συντεταγμενες.π.χ οταν πατάω κάποιο συγκεκριμενο pixel της οθόνης να εμφανίζετε η εικόνα που θέλω. Καποιος έχει ιδεα για του που θα βρώ ένα τέτοιο έτοιμο κώδικα? Ή να με βοηθήσει να τον φτιάξω?
MitsakosGR Δημοσ. 2 Νοεμβρίου 2013 Δημοσ. 2 Νοεμβρίου 2013 Σε τι λειτουργικό δουλεύεις; Αν είσαι σε windows μπορείς να χρησιμοποιήσεις το Win32Api για να πάρεις το χρώμα από το σημείο που βρίσκεται το ποντίκι σου. Δες αυτό το παράδειγμα που κάνει ακριβώς αυτό που ρώτησες στην αρχή. Η μόνη διαφορά είναι ότι αυτός εμφανίζει μία φορά το χρώμα ενώ εσύ θα το βάλεις σε επανάληψη για να ελέγχει συνέχεια τα χρώματα και θα τα συγκρίνεις με τα προκαθορισμένα.
παπι Δημοσ. 2 Νοεμβρίου 2013 Δημοσ. 2 Νοεμβρίου 2013 #include <Windows.h> #include <iostream> bool IsPointInRect(const POINT& point, const RECT& rect) { return ( rect.left < point.x && rect.right > point.x && rect.top < point.y && rect.bottom > point.y ); } int main() { HDC hDc; POINT point; COLORREF color; RECT rect; HBRUSH hBrush; rect.top = 0; rect.left = 0; rect.bottom = 100; rect.right = 100; while(true) { //pare to position toy mouse GetCursorPos(&point); //tsekare an einai mesa sto tetragwno, an einai spase ton broxo if(IsPointInRect(point,rect)) break; //an den einai, pes sto xrhsth na.. std::cout<<"Vale ta koylo soy mesa sto tetragwno reeeeee!!!"<<std::endl; //pare to hdc (des msdn gia hdc) tou desktop hDc = GetDC(HWND_DESKTOP); //to phrame h arxidia? if(hDc == 0) { std::cout<<"Paparia..."<<std::endl; //spase break; } //an to phrame, tote as paroyme ena screenshot 1x1 ekei pot einai to mouse color = GetPixel(hDc, point.x, point.y); //as ftiaksoyme mia pena me to xrwma poy phrame hBrush = CreateSolidBrush(color); //kai as zwgrafisoume ena tetragwno me ayth thn pena FillRect(hDc,&rect,hBrush); //telos diagrafoyme thn pena DeleteObject(hBrush); //kai apeletheromoyme to dc ReleaseDC(HWND_DESKTOP, hDc); //as mhn priksoyme ta papakia toy cpu Sleep(100); } return 0; }
jianoloukia Δημοσ. 2 Νοεμβρίου 2013 Μέλος Δημοσ. 2 Νοεμβρίου 2013 Αυτο μου βγάζει [Linker error] undefined reference to 'GetPixel@12' [Linker error] undefined reference to `CreateSolidBrush@4' [Linker error] undefined reference to `DeleteObject@4' ld returned 1 exit status C:\Users\x\Desktop\Makefile.win [build Error] n\make.exe: *** [Project1.exe] Error 1 Ή κάτι δε κάνω σωστά ή είμαι πολύ καντέμης
jianoloukia Δημοσ. 2 Νοεμβρίου 2013 Μέλος Δημοσ. 2 Νοεμβρίου 2013 Ναι,σε παρακαλω πες μου τι να κατεβάσω γιατί με αυτό δε θα κανώ ποτε τη δουλειά μου.Αν και ειναι το μόνο ξέρω να χρησιμοποιώ.
PC_MAGAS Δημοσ. 2 Νοεμβρίου 2013 Δημοσ. 2 Νοεμβρίου 2013 #include <Windows.h> #include <iostream> bool IsPointInRect(const POINT& point, const RECT& rect) { return ( rect.left < point.x && rect.right > point.x && rect.top < point.y && rect.bottom > point.y ); } int main() { HDC hDc; POINT point; COLORREF color; RECT rect; HBRUSH hBrush; rect.top = 0; rect.left = 0; rect.bottom = 100; rect.right = 100; while(true) { //pare to position toy mouse GetCursorPos(&point); //tsekare an einai mesa sto tetragwno, an einai spase ton broxo if(IsPointInRect(point,rect)) break; //an den einai, pes sto xrhsth na.. std::cout<<"Vale ta koylo soy mesa sto tetragwno reeeeee!!!"<<std::endl; //pare to hdc (des msdn gia hdc) tou desktop hDc = GetDC(HWND_DESKTOP); //to phrame h arxidia? if(hDc == 0) { std::cout<<"Paparia..."<<std::endl; //spase break; } //an to phrame, tote as paroyme ena screenshot 1x1 ekei pot einai to mouse color = GetPixel(hDc, point.x, point.y); //as ftiaksoyme mia pena me to xrwma poy phrame hBrush = CreateSolidBrush(color); //kai as zwgrafisoume ena tetragwno me ayth thn pena FillRect(hDc,&rect,hBrush); //telos diagrafoyme thn pena DeleteObject(hBrush); //kai apeletheromoyme to dc ReleaseDC(HWND_DESKTOP, hDc); //as mhn priksoyme ta papakia toy cpu Sleep(100); } return 0; } Μιας και δεν έχεις ορίσει namespace μήπως θέλει iostream.h στην δέυτερη γραμμή;
παπι Δημοσ. 2 Νοεμβρίου 2013 Δημοσ. 2 Νοεμβρίου 2013 Ναι,σε παρακαλω πες μου τι να κατεβάσω γιατί με αυτό δε θα κανώ ποτε τη δουλειά μου.Αν και ειναι το μόνο ξέρω να χρησιμοποιώ. Τι να σου πω τωρα για αυτη την μπακατελα; Ψαξε στο google για "add gdi32.lib in devc++" Μιας και δεν έχεις ορίσει namespace μήπως θέλει iostream.h στην δέυτερη γραμμή; Τι να εχω κανει;
jianoloukia Δημοσ. 2 Νοεμβρίου 2013 Μέλος Δημοσ. 2 Νοεμβρίου 2013 Επειδή δεν νομιζω να καταφερουμε κατι απο εδω.Οποιος εχει ορεξη να βοηθησει ας μου στηλει ενα μηνυμα να του πω το skype μου. Ευχαριστω!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα