Problem beim anzeigen von JPGs



  • Hallöchen zusammen!

    Für die Darstellung der Jpg-Bilder nutze ich die Klasse aus der FAQ. Wenn ich nun ein Bild anzeigen lasse von einer größe 1024*768 sieht das wie folgt aus

    |----------|---|
    | das bild | w |
    |          | e |
    |          | i |
    |          | ß |
    |----------|   |
    | weißer rand  |
    |--------------|
    

    Im Debugger gibt er mir für höhe und breite die richtige Daten an, aber wenn er dann das Bild anzeigt, hab ich diesen weißen rand??

    so lasse ich das Bild anzeigen:

    void CPCCView::OnDraw(CDC* pDC)
    {
    	CPCCDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
    
    	if(!m_picLoad)
    	{
    		//Stift erstellen und dem DC zuweisen
    		pen.CreatePen(PS_DASHDOTDOT, 1, RGB(200, 200, 200));
    		pDC->SelectObject(&pen);
    
    		//Bild laden und anpassen
    		if(!m_Image->Load(pDoc->GetPathName()))
    			MessageBox("Bild konnte nicht geladen werden!", "Achtung", MB_OK);
    		if(!m_Image->UpdateSizeOnDC(pDC))
    			MessageBox("Originalgröße konnte nicht festgestellt werden!", "Achtung", MB_OK);
    
    		//Vertikale Scrollbar anpassen, positionieren und neuzeichnen
    		si.nMax = m_Image->m_Height;
    		si.nPage = m_Image->m_Height/2;
    		this->SetScrollInfo(SB_VERT, &si, TRUE);
    
    		//Horizontale Scrollbar anpassen, positionieren und neuzeichnen
    		si.nMax = m_Image->m_Width;
    		si.nPage = m_Image->m_Width/2;
    		this->SetScrollInfo(SB_HORZ, &si, TRUE);
    
    		m_picLoad = true;
    
    		//Dateinamen speichern und in txt umwandeln
    		name = pDoc->GetPathName();
    		int pos = name.find(".", 0);
    		name.erase(pos+1, 3);
    		name += "txt";
    	}
    
    	//Bild anzigen
    //	if(!m_Image->Show(pDC, CPoint(0,0), CPoint(m_Image->m_Width, m_Image->m_Height), 0,0))
    //		MessageBox("Bild konnte nicht angezeigt werden!", "Achtung", MB_OK);
    	if(!m_Image->Show(pDC, CRect(0, 0, m_Image->m_Width, m_Image->m_Height)))
    		MessageBox("Bild konnte nicht angezeigt werden!", "Achtung", MB_OK);
    }
    


  • Vielleicht ist der Mapping Mode des DC auf Zoll, Meter oder Briefkästen (?! 😃 ) eingestellt.
    Mach ma:

    pDeinDC->SetMapMode(MM_TEXT);
    

    Dein Programm wird dann angewiesen jeden Koordinaten-Wert in Ein-Pixel Einheiten abzubilden.


Log in to reply