getPixel in Codeblocks

Gast #3350176
Lesenswert?

Weiß jemand wie ich getPixel() in C in Codeblocks mit dem GCC Compiler 
verwenden kann?

Wenn ich versuche den Code zu kompilieren bekomme ich diese 
Fehlermeldung:
fatal error: graphics.h: No such file or directory|

Mein Code:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <graphics.h>
4
#include <conio.h>
5

6
int main()
7
{
8
  int gd = DETECT, gm, color;
9
  char array[50];
10

11
  initgraph(&gd,&gm,"C:\\TC\\BGI");
12

13
  color = getpixel(0, 0);
14

15
  printf("color of pixel at (0,0) = %d",color);
16

17
  getch();
18
  closegraph();
19
  return 0;
20
}
#3350318
Lesenswert?

Welcher Fehler wurde denn erwartet? Was machen TPascal-Befehle im Code?
Und dann BGI-Treiber mit InitGraph laden, gibt es die überhaupt noch?

Header graphics.h in C/Cpp unter CodeBlocks wäre mir neu. Falls dieser 
Header funktioniert und im Verzeichnis des Quellcode vorliegt, dann 
sollte er mit #include "graphics.h" eingebunden werden. Zudem ist der 
Code wohl für ein Konsolenprogramm. Das hat kein eigenes Fenster und 
macht Ein-/Ausgaben von Text, nichts mit GetPixel(), SetPixel() usw.

Man kann unter CodeBlocks in C/Cpp ein WinGUI-Projekt mit eigenem 
Fenster erstellen, Verwendung Win32API mit #include <windows.h>. 
Anwendung von Funktion GetPixel() in geeigneter Weise, siehe z.B.:
http://www.coding-board.de/showthread.php/28267-C-GetPixel-viel-zu-langsam-auf-1280x1024.

Syntax:  COLORREF GetPixel(HDC hdc, int nXPos, int nYPos);
hdc = device context handle, nXPos und nYPos = Koordinaten x und y in 
logischen Einheiten. Funktionsrückgabe COLORREF ist ein RGB-Wert, der 
Typ Long entspricht (4 Bytes, longint bei TPascal oder FPC). Beachten, 
wie man das Handle hdc ermittelt und nach Gebrauch wieder freigibt!

Zur Erstellung von Fenstern gibt es im Web einige Win32API-Tutorials, 
z.B. auf pronix.de. Wärst Du angemeldet, könnte ich Dir einen C/Cpp-Code 
für main.c schicken (erstmal für die Maus unter WinAPI).
Gast #3350680
Lesenswert?

Ich habs jetzt doch noch geschaft.

Hier ein Beispielcoden, falls in jemand irgendwann brauch...
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <windows.h>
4
#include <conio.h>
5

6
int main()
7
{
8
    int color;
9
    unsigned char r,g,b;
10

11
    HDC dc = GetDC(NULL);
12
    color = GetPixel(dc, 960, 540);
13
    r=GetRValue(color);
14
    g=GetGValue(color);
15
    b=GetBValue(color);
16
    printf("%x\tr:%i g:%i b:%i\n",color,r,g,b);
17

18
    ReleaseDC(NULL, dc);
19

20
    return 0;
21
}
#3351867
Lesenswert?

Da kommt bei mir nur Error: undefined reference to '_GetPixel@12'
Ebenso mit SetPixel(), nur GetDC u. ReleaseDC scheinen zu funktionieren.
In einem richtigen WinAPI-Fenster mit Botschaftverarbeitung läuft es 
sowieso, allerdings erhalte ich für eine windowsgraue Fensterfläche 
immer den Farbwert 0xFFFFFF. Wie das?
#3354667
Lesenswert?

Supi! Jedoch erhalte ich im Konsolenprogramm jetzt tatsächlich immer den
Farbwert 0xffffff, auch bei Abtasten größerer Flächen kein Unterschied.
Es hätte mal eine andere Farbe kommen sollen, dabei waren die Handles 
für Fenster/Desktop und Bildschirmkontext nicht Zero oder NULL. Na ja, 
das Programm hat für mich keinen Nutzen, es war nur interessant.

Zu "graphics.h von Borland": http://www.cplusplus.com/reference/
FAQs gibt es bei Sucheingaben wie "CodeBlocks Borland graphics.h"

Zum Thema "Ersatz für graphics.h" gibt es Artikel und Downloads, mit der 
praktischen Anwendung bin ich aber nicht zurechtgekommen.
http://openbgi.sourceforge.net/ , Download: openbgi-sources-1.5.zip
http://winbgim.codecutter.org/ , Download WinBGIm 6.0 Libray für MinGW 
5.x.x (Library build with MingW 5.0.3 and GCC 3.4.5).

In Forenbeiträgen (EN) war oft zu lesen, daß Datei graphics.h von 
Borland nur mit spez. Borland-Produkten nutzbar und das alles schon 
obsolet sei, es habe schon Probleme beim Übergang von DOS nach OOP in 
Windows gegeben.
Persönliche Seite #3354790
Lesenswert?

@Leo
Möchtest Du unbedingt die Konsole benutzen ?
Die Möglichkeiten ein Fenster unter Windows zu nutzen, mit oder ohne 
Framework, sind auch nicht zu verachten.

So Interaktive Möglichkeiten sind ja von der Konsole her nicht so üppig.

Paar Schlagwörter :)
-Dialoge aus Resourcen oder Direkt per CreateWindow mit
Radio/Check/Bitmap-Buttons, Listboxen, List-/Treeview, Scrollbars, 
Progressbar, Labels und das alles variabel.
-entweder mit einem Framework oder direkt als reine Api-Anwendung mit 
Nachrichtenschleife.
-selbst definierte Windowklassen die sich nach deinem Geschmack 
verhalten
#3354865
Lesenswert?

Schönes Programm! Habe BALL_MOVE_DELTA leicht erhöht, da hüpfen die 
Bälle etwas zackiger. Blauer und grüner Ball springen immer synchron. 
Ist das beabsichtigt? Womit Ressourcen compiliert? Dazu hatte ich mal 
RC.exe für Win-16-Bit. Läuft nicht in Win7, auch im Win-XP-Modus nicht.
Persönliche Seite #3355729
Lesenswert?

Das MINGW welches üblicherweise bei Codeblocks inklusive ist hat WINDRES 
dabei.

Das Resourcenskript ist Resource.RC und im Projektbaum eingebunden.
Passende Header-Files genierieren die Resourceneditoren normal mit.

Für eventuelles Editieren von dem RC-File gibt es ja RESEDIT oder ResEd.
Das Programm war "Damals[tm]" dafür angedacht um rauszufinden wie 
flüssig man das animieren kann ohne DX oder OpenGl.
Bewegungen sind da eher zufällig reinprogrammiert.
Kann sogar sein, daß ein Teil ein ehemaliges MASM32-Projekt war.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren