Bitmaps in Konsole einfügen



  • Ich wollte mal wissen ob es möglich ist eine
    selbstgemachte Paint "Skizze" in eine Konsolenanwendung einzufügen.



  • Nein, das ist nicht möglich.



  • Soweit ich weiß, gibt es eine Möglichkeit, dir einen DC deines Konsolenfensters zu besorgen und dort reinzumalen. (aber ich habe keine Ahnung, wie das funktioniert - irgendwo im Konsolen-Board müsste etwas dazu stehen)



  • CStoll schrieb:

    Soweit ich weiß, gibt es eine Möglichkeit, dir einen DC deines Konsolenfensters zu besorgen und dort reinzumalen. (aber ich habe keine Ahnung, wie das funktioniert - irgendwo im Konsolen-Board müsste etwas dazu stehen)

    Tatsache, das geht. Man kann sich mit 'GetDC(GetConsoleWindow())' unter Windows einen bemalbaren Handle der Konsole besorgen. Aber das sind OS-spezifische Funktionen.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • #include <windows.h> 
    #include <stdio.h> 
    //#pragma comment(lib,"gdi32.lib") 
    
    int LoadBmp2Console(char *szBitmap, int PosX, int PosY) 
    {    
      HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,szBitmap, 
                         IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 
      if (!hBitmap) return 1; 
    
      BITMAP bmp; 
      GetObject(hBitmap,sizeof(bmp),&bmp); 
    
      HWND hwnd = FindWindow("ConsoleWindowClass",NULL); 
      if (!hwnd) return 2; 
    
      HDC hDC = GetDC(hwnd);    
      if (!hDC) return 3; 
    
      HDC hBitmapDC = CreateCompatibleDC(hDC); 
      if (!hBitmapDC) return 4; 
    
      SelectObject(hBitmapDC,hBitmap); 
    
      BitBlt(hDC,PosX,PosY,bmp.bmHeight,bmp.bmWidth,hBitmapDC,0,0,SRCCOPY);  
    
      DeleteObject(hBitmap); 
      ReleaseDC(hwnd,hBitmapDC); 
      ReleaseDC(hwnd,hDC); 
    
    return 0; 
    } 
    
    int main() 
    {      
      int Status = LoadBmp2Console("bitmap.bmp",10,10); 
      if(Status!=0)printf("Fehler: %i",Status);  
    
      getchar();  
      return 0; 
    }
    

    Bitteschön 😉 Bei Dev C++ musst du allerdings die gdi32.lib linken, also:
    Unter dem Menüpunkt "Projekt Optionen"-->"Linker Optionen" das Wort "-lgdi32" (ohne "") eingeben.

    have Fun MFG Mikey



  • Es ist mit der Funktion CreateConsoleScreenBuffer und einem geheimen Flag möglich.


Log in to reply