Auf Backbuffer lässt sich nicht farbig zeichnen
-
Erstellt wird der Buffer folgendermaßen:
hdc=GetDC(hWnd); backbuffer=CreateCompatibleDC(hdc); hbmp = CreateCompatibleBitmap(backbuffer, WNDWIDTH, WNDHEIGHT); //Bitmap erstellen hbmpold = (HBITMAP)SelectObject(backbuffer, hbmp); //Bitmap auswählen, altes speichern hbrush = CreateSolidBrush(RGB(255, 255, 255)); //weissen Brush erstellen FillRect(backbuffer, drawrec, hbrush); //weiss malenNun hab ich das Problem, dass weder SetPixel(...,RGB(..)) farbig zeichnet noch LineTo usw. wenn ich einen bestimmten farbigen Stift auswähle. In einem anderen Thread stand etwas von wegen SetPixel usw. arbeiten mit COLORREF strukturen, Bitmaps erwarten jedoch RGBQUAD Farbwerte. Wie kann ich da jetzt dennoch mit SetPixel usw. farbig malen?
-
Es scheint so als würde nur ein monochromes Bitmap erstellt

-
MasterCounter schrieb:
von wegen SetPixel usw. arbeiten mit COLORREF strukturen
COLORREF ist keine Struktur, sondern ein primitiver Datentyp (unsigned int).
Zeig mal mehr Code. Wie zeichnest Du in Deinen Back-Buffer?
-
ganz einfach, nur ums zu testen
Die Linien sind aber immer schwarz, egal ob ich extra einen Pen erstelle (was man bei SetPixel doch gar nicht muss, denk ich mal) oder ob ichs ohne mache...hdc=GetDC(hWnd); backbuffer=CreateCompatibleDC(hdc); hbmp = CreateCompatibleBitmap(backbuffer, WNDWIDTH, WNDHEIGHT); //Bitmap erstellen hbmpold = (HBITMAP)SelectObject(backbuffer, hbmp); //Bitmap auswählen, altes speichern hbrush = CreateSolidBrush(RGB(255, 255, 255)); //weissen Brush erstellen FillRect(backbuffer, drawrec, hbrush); //weiss malen x=0; y=0; while(x<WNDWIDTH && y<WNDHEIGHT) { SetPixel(backbuffer,(int)x,(int)y,RGB(255,0,0)); x++; y++; } BitBlt(hdc,deleterc->left,deleterc->top,deleterc->right,deleterc->bottom,backbuffer,deleterc->left,deleterc->top,SRCCOPY); // Freigabe der Objekte SelectObject(backbuffer, hbmpold); DeleteObject(hbmp); DeleteDC(backbuffer); ReleaseDC(hWnd, hdc); DeleteObject(hbrush);
-
Gib bei CreateCompatibleBitmap() nicht 'backbuffer' sondern 'hdc' an!
Das Handle das CreateCompatibleDC() ist standardmässig mit ner 1x1 großen Monochrom-Bitmap versehen, daher wird die Bitmap die CreateCompatibleDC() dann erzeugt auch monochrom

-
läuft jetzt -.- Ohne Witz, manchmal könnt ich meinen Kopf runterreissen und gegen ne Wand prügeln....
Vielen, vielen Dank an dich! 