Bitmap auswählen und dann im Dialogfenster anzeigen lassen



  • kurze frage zwischendurch,

    TaccoGo schrieb:

    bmp.LoadBitmap("c:\\test.bmb") ...
    

    wie kann ich einem so geladenem Bitmap eine ID bzw einen namen zuweisen, damit man es auch in der CBitmapButton::LoadBitmaps methode nuten/übergeben kann?



  • Hast du schonmal versucht nur die CBitmap Variable zu benutzen ?

    Ungefähr so:

    CBitmap bitmap;
    bitmap.LoadBitmap("C:\\Text.bmp");
    
    m_Button.LoadBitmaps(bitmap,...);
    

    Vielleicht klappt es !

    Gruß
    :: NoName ::



  • Ja ich benutze eine Picturebox!
    Diese hat die ID:IDC_STATIC

    Ich möchte dann später das ganze noch abändern, dass ich das Bild drucken kann... Ist dies auch möglich oder muss ich das ganze dann anders angehen?



  • Ich habe noch diese Methode probiert:

    BITMAP bmpInfo; 
          bmp.GetBitmap(&bmpInfo); 
          CDC dcMemory; 
          dcMemory.CreateCompatibleDC(dc); 
          CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp); 
          CRect rect; 
          GetClientRect(&rect); 
          int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2; 
          int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2; 
          pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY); 
    
          dcMemory.SelectObject(pOldBitmap);
    

    aber es kommt immer ein Fehler bei dieser Zeile:

    dcMemory.CreateCompatibleDC(dc);
    

    Sehe ich es richtig, dass ich mit dieser Fukntion dann das Bild auch gerade ausdrucken könnte? einfach dem Objekt

    CClientDC dc(this);
    

    anstatt this den Printer übergeben?

    Vielen Dank für die Antworten



  • Ich habe nun noch weiterversucht und es geschafft!
    Jetzt kommt keine Fehlermeldung aber es wird nur ein schwarzer Balken gedruckt.

    Kann mir jemand sagen wieso?

    void CADS2Dlg::Logos(CDC* dcPrint)
    {
       CBitmap bmp; 
       bmp.LoadBitmap("E:\logos\logos\Logo_1gp.tif");
    
       CDC dcMemory; 
       dcMemory.CreateCompatibleDC(dcPrint);
       CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp); 
       CRect rect; 
       GetClientRect(&rect); 
    
       dcPrint->BitBlt(10,10,100,50,&dcMemory,0,0,SRCCOPY);
       dcMemory.SelectObject(pOldBitmap); 
    }
    

    Vielen Dank für die Antworten



  • :: NoName :: schrieb:

    Hast du schonmal versucht nur die CBitmap Variable zu benutzen ?

    Ungefähr so:

    CBitmap bitmap;
    bitmap.LoadBitmap("C:\\Text.bmp");
    
    m_Button.LoadBitmaps(bitmap,...);
    

    Vielleicht klappt es !

    Gruß
    :: NoName ::

    nope, geht nicht! ich meine, es steht ja auch nicht in der doku... vorschläge...



  • Hallo nochmal!

    Ich hab nun das:

    CString strPos; 
    strPos.Format("X-Koordinate = %d \nY-Koordinate = %d", point.x,point.y); 
    AfxMessageBox(strPos);
    

    noch eingefügt, funktioniert auch.
    Blöd ist nur, dass die Pixelinformationen vom Dialog gezeigt werden, nicht von der Picture-Box.
    Ist es irgendwie möglich einen sichtbaren Rahmen über die Picturebox zu ziehen, oder einen sichtbaren Punkt zu setzen bis zur Bestätigung? (damit der User nicht an die falsche Stelle klickt.... 🙄 ) (es ist relativ wichtig)



  • Irgendwie lädt es das Bild bei mir nicht (externe)
    Wenn ich ein Ressourcenbild drucken will, geht es ohne Probleme....
    Wieso geht es mit den externen nicht? Wird einfach ein schwarzer Balken gedruckt! Wie könnte ich jpg-Bilder laden?

    Hier meine Fukntion:

    {
    
        int m_iHorizont = dcPrint->GetDeviceCaps(HORZRES); 
        int m_iVerdikal = dcPrint->GetDeviceCaps(VERTRES);
        int m_iLeft=25;      // mm
        int m_iTop=95;       // mm
    
        CBitmap bmp;
        CBitmap bild;
        bmp.LoadBitmap(IDB_BITMAP1);
    
        CDC SpeicherDC; 
        SpeicherDC.CreateCompatibleDC(dcPrint); 
        SpeicherDC.SelectObject( &bmp ); 
    
        dcPrint->StretchBlt( ((m_iHorizont/210) * m_iLeft), ((m_iVerdikal/297) * m_iTop), ((m_iHorizont/210) * 52), ((m_iVerdikal/297) * 8), &SpeicherDC, 0, 0, 541, 83, SRCCOPY ); 
    }
    

    Wäre echt froh, wenn mir jemand helfen könnte!

    VIELEN DANK! 😉



  • @Nicophi

    Einen Rahmen kannst du bei den Styles einstellen !

    @addict

    Um Jpg's laden zu können musst du dir mal das anschauen :

    http://www.codeproject.com/bitmap/pictureshow.asp

    oder du machst es mit CPicture, ein beispiel gibt's hier:

    http://msdn.microsoft.com/msdnmag/issues/01/10/c/

    Hoffe konnte euch helfen !

    Gruß
    :: NoName ::



  • Um JPG's zu laden würde ich die Klasse CImage empfehlen, alles weitere findeste in deiner örtlichen MSDN ^^


Anmelden zum Antworten