Jpg anzeigen - aber nicht in Originalgröße



  • Ich versuche gerade ein Programm zu schreiben, dass mir alle Bilder aus einem Verzeichnis in der Größe 80x80 anzeigt und diese umbenennt. Mit Bitmaps funzt das einwandfrei.
    Doch da es sich ausnahmslos um jpgs handelt und ich die Bitmapunterstützung nur zu Testzwecken eingebaut habe, nützt mir das recht wenig. Wie stelle ich es am geschicktesten an, mein jpg-Bild in der festen Größe von 80x80 dazustellen und nicht einfach in seiner Originalgröße? 😕



  • Wie lädst Du denn Jpegs ?



  • Ich habs schon mit Microsofts Loadpic http://codeguru.earthweb.com/bitmap/PictureEx.html versucht, doch leider bieten beide keine Möglichkeit zur Größenfestlegung oder ich sehe sie zumindest nicht. 🙄

    [ Dieser Beitrag wurde am 08.09.2002 um 23:28 Uhr von Lord Hessia editiert. ]



  • Laut Doku benutzt LoadPic die Funktion IPicture::Render, um das Bild zu zeichnen. Parameter 4 und 5 geben doch die Ausdehnung auf dem DC an, oder etwa nicht?



  • Hier hast du ein Bsp.

    // gpPicture ist von Typ IPicture
    gpPicture->get_Width(&hmWidth); //original Größe hmWidth ist int-Wert
    gpPicture->get_Height(&hmHeight);
    // convert himetric to pixels kannst du dir sparen,wenn eine Festgröße verwenden seien soll.
    nWidth  = ::MulDiv(hmWidth, GetDeviceCaps(pDC->m_hDC, LOGPIXELSX), HIMETRIC_INCH);
    nHeight = ::MulDiv(hmHeight, GetDeviceCaps(pDC->m_hDC, LOGPIXELSY), HIMETRIC_INCH);
    
    //
    RECT rc;
    ::GetClientRect(ghWnd, &rc);
    // display picture using IPicture::Render
    
    if(nWidth ==  nHeight)
    gpPicture->Render(pDC->m_hDC, x,y, /*hier kannst du entweder original Größe einfügen zB. nWidth  oder auch ein int Wert*/ 100, /*nHeight*/100, 0, hmHeight, hmWidth, -hmHeight, &rc);
    else
    if(nWidth>nHeight)//Hoch Format wenn es ein Foto ist
    gpPicture->Render(pDC->m_hDC, x, y,/* nWidth*/130, /*nHeight*/90, 0, hmHeight, hmWidth, -hmHeight, &rc);
    else//Querformat
    gpPicture->Render(pDC->m_hDC, x, y,/* nWidth*/90, /*nHeight*/130, 0, hmHeight, hmWidth, -hmHeight, &rc);
    

    Viel Spaß noch...



  • Danke, so ein ähnliches Beispiel hab ich auch noch auf der Platte, aber wie kommt man an: pDC->m_hDC (Ich habe eine SDI-Anwendung)

    Und wie lade ich das Bild in gpPicture? In dem Beispiel auf meiner Platte stand etwas von OleLoadPicturePath(...) und LoadPic aus MSDN verwendet OleLoadPicture(...)

    Tut mir leid, wenn ich etwas schwer von Begriff bin, aber alle Artikel die ich zu diesem Thema finde sind für Dialogfelder, ich finde einfach keines für SDI.


Anmelden zum Antworten