Problem mit GetPixel
-
...und könntest Du bitte das in den Augen schmerzende GOTO wegmachen?
//Parameter sind Varaiablen, die das Client Rect beschreiben void GetRectangle (int min_x,int min_y ,int max_x,int max_y) { int real_x=0,real_y=0; COLORREF color; int x,y; x = min_x; y = min_y; while (x<=max_x) { while (y<=max_y) { color = GetPixel (bufferhdc,x,y); if (color == CLR_INVALID) { MessageBox (hWnd,"Cannot Read Pixels!","",MB_OK); return; } else if (color!=RGB(255,255,255)) { real_x = x; real_y = y; } y++; } x++; y=0; } rx = real_x; //globale Variablen für das Ergebnis ry = real_y; }Dann:
Welche Werte haben x und y denn zur Laufzeit? Setz Breakpoints, frag Deinen Debugger (denn der weiß sowas)...
-
ich denke er hat ein fenster in das er reinmalt und beim speichern ruft er diese funktion auf um die maximale bitmap grösse zu ermitteln. hoffe ich zumindest das es so ist.
-
Ist bufferhdc überhaupt gültig?
-
@miller_m das ist genau richtig!
Die Werte von x und y sind richtig, denn die Funktion liefert ja nur dann einen Fehler, wenn ich statt 200,100 eben x und y einsetzte, also ist bufferhdc gültig!!! Es scheint so als käme GetPixel nicht mit meinen Variablen klar, obwohl diese die richtigen Werte haben!
Wie speichert man denn sonst Bitmaps, wo nur ein Teil bemalt ist? Da ist ja dann auch nicht der ganze Rest schwarz!
-
In eine Fenster ist immer alles bemalt!
-
Wie machen die das in Paint? Wo man den Bereich verändern kann, in dem man malen will?
-
Igendwie werde ich aus deinen Antworten nicht wirklich schlauer

Soll heißen: ich weiß immer noch nicht, wo überhaupt dein Problem liegt
-
vorschlag:
mach doch ein zweites client fenster das der grösse eines vorgegebnen zeichenbereich (320*240 zum beispiel) entspricht und lass nur in diesen bereich etwas reinzeichnen. beim speichern frägst du die aktuelle grösse des fenster ab und somit hast du deine bitmap grösse. die grösse des clientfenster könntest du ja mittels dialog oder sizegripper varieren.
-
was ist sizegripper
-
das ding unten rechts mit dem so ziemlich jedes fenster grösser machen kann

-
Ich denke, er mein sowas hier

edit: zu spät

-
@flenders
diesmal waren die sekunden auf meiner seite

-
sowas nennt man ausgleichende Gerechtigkeit

-
MasterCounter schrieb:
sry doppelpost
und wo ist der erste

-
der der doppelt war hab ich editiert
-
und welcher is der un-editierte ?

Haste mal versucht die x und y Angabe direkt vor GetPixel() mal auszugeben ?
Es gibt nur die Möglichkeit das entweder der DC-Handle nicht stimmt (oder was mit dem DC an sich nicht stimmt) oder x/y außerhalb des zulässigen Bereichs sind...