Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » BMP in die Ressourcen bringen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
06.07.2004, 11:41 Uhr
t10ottoo



Hi,

hab da nen kleines Problem. Also hier erstmal der Quellcode:

C++:
    CBitmap bild;

    GetDlgItem(IDC_BILD);
    CDC *pDC = GetDlgItem(IDC_BILD)->GetDC();
    CDC imageDC;
        
    imageDC.CreateCompatibleDC(pDC);

    //Dieses Bitmap muss als Ressource existieren
    bild.LoadBitmap(IDB_COLA);
    
    imageDC.SelectObject(&bild);

    //hier musst du die Groesse in Pixeln und den Offset angeben
    pDC->BitBlt(3, 3, 400 , 400, &imageDC, 0, 0, SRCCOPY);
        
    imageDC.DeleteDC();

    GetDlgItem(IDC_BILD)->ReleaseDC(pDC);


Der Code funktioniert auch soweit einwandfrei. Problem:
Das Bitmap wird nicht angezeigt.

Ursache:
In der Ressourcen Ansicht, kann ich dem Bitmap, was ich hinzugefügt habe, keine Bitmap zuweisen. Habe in den Eigenschaften von meinem Bitmap "IDB_COLA" unter Dateiname "res\cola.bmp" angegeben, aber er zeigt es einfach nicht an.
Und irgendwie muss ich es ja zu den Ressourcen hinzufügen, oder gibt es noch eine Möglichkeit, direkt die Bilder von einem Ordner in mein "IDC_BILD"(static) anzuzeigen?

Danke schonmal für die Hilfe
Thomas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.07.2004, 13:33 Uhr
t10ottoo



Durch lauter rumprobieren hab ichs nun hinbekommen.
Die Grafik durfte nicht mehr als 256 Farben haben

Gruß
Thomas

PS:
Trotzdem bleibt noch die Frage offen, wie ich direkt nen Bild von nem Ordner laden kann, ohne das erst in die Ressourcen einfügen zu müssen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.07.2004, 13:36 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


www.fun-soft.de/showtopic.php?threadid=7302
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.07.2004, 13:41 Uhr
t10ottoo



Jo, das hab ich auch schon versucht, weiß net, was du mit "rohrbild" meinst? Is ja auch nirgends deklariert:

C++:
    CString szFilename="cola.bmp";
    HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename, IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);

    CBitmap pic;
    pic.Attach(hBmp);

    BITMAP bild_header;
    rohrbild.GetBitmap(&bild_header);

    CWnd* wp = GetDlgItem(IDC_BILD);//hier am besten so ein statischen rahmen nehmen um das bitmap anzuzeigen... an sonsten halt this...
    CDC *pDC = wp->GetDC();
    CDC imageDC;
    imageDC.CreateCompatibleDC(pDC);
    imageDC.SelectObject( &pic);

    int offsetx=0,offsety=0;  //oder wo auch immer die linke obere ecke hin soll
    pDC->BitBlt(offsetx, offsety, bild_header.bmWidth, bild_header.bmHeight, &imageDC, 0,
0, SRCCOPY);
        
    imageDC.DeleteDC();
    wp->ReleaseDC(pDC);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.07.2004, 13:47 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


upsi muss natürlich pic heissen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.07.2004, 14:12 Uhr
t10ottoo



Ahh, so gehts
Danke, aber er machts irgendwie zuuuu groß, also ich hab ja sonen Steuerelement genommen, er machts aber über den Rand hinaus...

Hmm... :/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.07.2004, 17:04 Uhr
t10ottoo



Hmm...Hab jetzt mal die Methode
SetBitmapDimension
versucht, aber da ändert sich dann irgendwie nix am Bild
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.07.2004, 17:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


habs noch nicht porbiert aber es gibt sowas wie stretch bitmap oder so
musst dir mal die member von CDC anschauen...

oder du probierst mal

C++:
pDC->BitBlt(offsetx, offsety, 20, 20, &imageDC, 0,0, SRCCOPY);


aber ich vermute mal das er da nur die ersten 20 pixel malt und nicht das bild auf grösse 20x20 schrumpft... musst das ding also erst entsprechend skalieren und die funktion dazu stehen wie gesagt garantiert in der MSDN unter CDC
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.07.2004, 17:33 Uhr
t10ottoo



StrechtBlt heißt die Funktion, hab sie inner MSDN gefunden, aber irgendwie bin ich zu doof.
Hab das nun so gemacht:

C++:
pDC->BitBlt(0,0,bild_header.bmWidth,bild_header.bmHeight,&imageDC,0,0,SRCCOPY);
pDC->StretchBlt(0,0,100,200,pDC,0,0,100,200,SRCCOPY);



Aber ich merk kein Unterschied, also ist immer noch viel zu groß.
Und wenn ich die erste Zeile weglasse, dann zeigt er gar kein Bild an.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.07.2004, 18:33 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ohne das zu wissen
ich würd mal sagen du musst das bild erst stretchen und dann anzeigen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: