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 übergeben 🙄

    HBITMAP 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


Anmelden zum Antworten