Bitmap anzeigen
-
Hallo,
wie kann ich ein Bitmap-Bild auf dem Bildschirm darstellen? Das Bild ist als Ressource im Projekt vorhanden.
Das Bild soll in der Mitte des Bildschirms dargestellt werden. Wie ermittle ich die maximale Größe des Schirms. Die Bitmap soll auf verschiedenen Rechnern stets in der Mitte dargestellt werden. Eine Größe von 640 x 480 Pixeln hilft mir deshalb nicht weiter.
Gruß
Anfaenger1
-
Anfaenger1 schrieb:
wie kann ich ein Bitmap-Bild auf dem Bildschirm darstellen? Das Bild ist als Ressource im Projekt vorhanden.
LoadBitmap, CreateCompatibleDC, SelectObject, BitBlt
Anfaenger1 schrieb:
Wie ermittle ich die maximale Größe des Schirms.
GetSystemMetrics
-
Hallo,
ich habe jetzt diesen Code, leider meckert der Compiler wegen nichtdeklarierter Bezeichner. Was muß ich noch deklarieren?
bild = LoadBitmap (g_hInst, bild_id); GetObject (test, sizeof (BITMAP), &bitmap) ; hdcMem = CreateCompatibleDC (hdc) ; SelectObject (hdcMem, bild) ; BitBlt (hdc, 570, 420, bitmap.bmWidth,bitmap.bmHeight, hdcMem, 0,0, SRCCOPY) ;
Vielleicht könnt Ihr mir die Parameter der Funktionen LoadBitmap, CreateCompatibleDC und BitBlt näher erklären. Aus der Hilfe von MS werde ich nicht so richtig schlau.
Danke für Eure Hilfe.
-
Von welchen Bezeichnern meint er denn, dass sie nicht deklariert seien?
GetObject musst du afaik bild im ersten Parameter übergebenHBITMAP LoadBitmap( HINSTANCE hInstance, // das bekommst du in WinMain oder in WM_CREATE aus dem CREATESTRUCT LPCTSTR lpBitmapName // wenn du es aus einer Resource lädst: MAKEINTRESOURCE(ID_DEINESBILDES) wobei ID_DEINESBILDE die ID der Resource ist (resource.h) );
CreateCompatibleDC übergibst du einfach ein DC-Handle (das, auf welches du zeichnen willst), zu dem ein kompatibler DC erstellt werden soll
BOOL BitBlt( HDC hdcDest, // DC, auf den geblittet werden soll int nXDest, // x-Start-Position auf dem Ziel-DC int nYDest, // y-Start-Position auf dem Ziel-DC int nWidth, // Breite des zu kopierenden (blitten) Bereichs int nHeight, // Höhe des zu blittenden Bereichs HDC hdcSrc, // DC, der auf hdcDest geblittet werden soll (Memory-DC, in den du dein Bild selektiert hast) int nXSrc, // x-Start-Position des zu blittenden Bereichs in hdcSrc int nYSrc, // y-Start-Position des zu blittenden Bereichs in hdcSrc DWORD dwRop // raster operation code, gibt an, wie hdcSrc auf hdcDest geblittet werden soll (genaueres siehe Doku );
-
bild, g_hinst, bild_id, test, bitmap,hdcMem und hdc sind nichtdeklarierte Bezeichner.
Außerdem meint der Compiler dass der linke Teil von .bmWidth eine Klasse/Struktur/Union sein. Das Selbe behauptet er von .bmHeight.
-
ROFL
Der war nicht schlecht!
-
Warum deklarierst du sie nicht einfach - oder was du etwa nicht, was das ist
HBITMAP bild; // g_hinst bekommst du wie gesagt von WinMain #define BILD_ID 101 // das ist jetzt mal willkürlich von mir so festgelegt BITMAP bitmap; // hdc bekommst du von BeginPaint HDC hdcMem; // das mit .bmWidth und .bmHeight wird wohl ein Folge-Fehler sein
-
-King- schrieb:
ROFL
Der war nicht schlecht!Dem kann ich nur voll und ganz zustimmen :p