CreateBitmap()
-
Möchte ein Bitmap mit einer bestimmten Farbe erstellen.
Das Bitmap soll 16 * 16 pixel groß sein und Beispielsweise komplett rot.
Wie mach ich das?
-
Graphics::TBitmap *BrushBmp = new Graphics::TBitmap; BrushBmp->Width = 16; BrushBmp->Height = 16; BrushBmp->Canvas->Brush->Color = clRed; BrushBmp->Canvas->Rectangle(0,0,16,16); BrushBmp->SaveToFile("deinebmp.bmp");
So würde ich das lösen.
MfG
TippoEdit:
Freigeben des Speichers nie vergessen:
delete BruhBmp;
-
Möchte es gerne mit HBITMAP machen geht das?
-
Hat jemand eine C lösung nicht C++?
Wenn nicht:
Was muss ich für Graphics::TBitmap includen?
-
TBitmap ist glaube ich Borlands VCL-Kram.
// GDI+-Variante: // Hier GDI+ initialisieren // (siehe msdn) // Bitmap-Objekt erzeugen: Bitmap *myBmp=new Bitmap(16,16,PixelFormat24bppRGB); // Graphics-Objekt erzeugen, welches unser Bitmap-Objekt manipulieren soll: Graphics *gfx=new Graphics(myBmp); // Clear() mit Farbe rot anwenden: gfx->Clear(Color.Red); // Graphics-Objekt brauchen wir nicht mehr: delete gfx; // Jetzt Bitmap speichern oder sonstwas damit anstellen: // ...
Bei Standard GDI:
Bitmap erzeugen mit CreateCompatibleBitmap() z.B.
In ein DC selektieren (z.B. mit CreateCompatibleDC() den DC erzeugen)
und dann z.B. FillRect() oder sowas benutzen.
-
Möchte die standard GDI Version benutzen, aber meine Bitmaps sind alle schwarz
Mache ich was falsch?width und height sind Parameter und beide 16
RECT rect = {0, 0, width, height}; HBITMAP bitmap, temp; HBRUSH hBgBrush; HDC hdc = GetDC(hWndMain); HDC temp_hdc = CreateCompatibleDC(hdc); bitmap = CreateCompatibleBitmap(hdc, width, height); SelectObject(hdc, bitmap); hBgBrush = CreateSolidBrush(RGB(255,0,0)); FillRect(hdc, &rect, hBgBrush); DeleteObject(hBgBrush); ReleaseDC(hWndMain, hdc); ReleaseDC(hWndMain, temp_hdc);
-
RECT rect = {0, 0, width, height}; HBITMAP bitmap; HBRUSH hBgBrush; HDC hdc = GetDC(hWndMain); HDC temp_hdc = CreateCompatibleDC(hdc); // Bitmap erzeugen und in temp_hdc selektieren: bitmap = CreateCompatibleBitmap(hdc, width, height); HGDIOBJ previousBitmap=SelectObject(hdc, bitmap); // Brush erzeugen und auf temp_hdc anwenden (wo die Bitmap drin liegt) hBgBrush = CreateSolidBrush(RGB(255,0,0)); FillRect(temp_hdc, &rect, hBgBrush); DeleteObject(hBgBrush); // Inhalt von temp_hdc nach hdc kopieren an Stelle xDst/yDst: BitBlt(hdc,xDst,yDst,16,16,temp_hdc,0,0,SRCCOPY); // Aufräumen: SelectObject(temp_hdc,previousBitmap); DeleteDC(temp_hdc); ReleaseDC(hWndMain,hdc);