Hallo ins Forum:
ich möchte ein jpg, welches ich in einem Dialog auswähle in einem Dialog sozusagen als Preview anzeigen.
Dazu habe ich ein Picture Control feld mit der Variablen m_Bild belegt.
In meiner Funktion onOpen wähle ich ein Bild aus udn speichere den Pfad in m_path. Soweit so gut. Nun will ich das Bild darstellen.
Das geht wohl in der Funktion OnPaint. Hier habe ich unter den Standartsachen
bei Else unter dem CDialog folgendes eingefügt:
Jetz folgendes:
1. Das bild wird verzerrt in der Picture Control dargestellt.
Wie kann ich das ändern , sodass die Größenverhältnisse des Bildes beibehalten bleiben?
2. das Bild wird beim ersten auswählen nur ca. 1 sek angezeigt -> es blinkt nur kurztz auf. Beim 2. auswählen funktioniert es dann fein.
Ne idee wo der Fehler liuegt?
Vielen Dank
ich möchte ein jpg, welches ich in einem Dialog auswähle in einem Dialog sozusagen als Preview anzeigen.
Dazu habe ich ein Picture Control feld mit der Variablen m_Bild belegt.
In meiner Funktion onOpen wähle ich ein Bild aus udn speichere den Pfad in m_path. Soweit so gut. Nun will ich das Bild darstellen.
Das geht wohl in der Funktion OnPaint. Hier habe ich unter den Standartsachen
Code:
if(isIconic())
{
CPaintDC dc(this);
SendMessage(WM............
...
}
else
{
CDialog::OnPaint();
}
bei Else unter dem CDialog folgendes eingefügt:
Code:
CFile f;
if (!f.Open(m_path,CFile::modeRead))
cout << "kann nicht gelesen werden" << endl;
else
{
CArchive ar (&f,CArchive::load|CArchive::bNoFlushOnDelete);
CArchiveStream arStream (&ar);
IStream* pIStr = &arStream;
if (pIPic)
pIPic->Release();
HRESULT hr = OleLoadPicture(pIStr,0,FALSE,IID_IPicture,(LPVOID*) &pIPic);
}f.Close();
CDC* theDC = m_Bild.GetDC();
HDC hDC = theDC->GetSafeHdc();
long hmWeite;
long hmHoehe;
CRect zeichenflaeche(0,0,0,0);
pIPic->get_Width(&hmWeite);
pIPic->get_Height(&hmHoehe);
m_Bild.GetClientRect(&zeichenflaeche);
pIPic->Render(hDC,zeichenflaeche.left,zeichenflaeche.top, zeichenflaeche.Width(), zeichenflaeche.Height(),0, hmHoehe,hmWeite,-hmHoehe,NULL);
Jetz folgendes:
1. Das bild wird verzerrt in der Picture Control dargestellt.
Wie kann ich das ändern , sodass die Größenverhältnisse des Bildes beibehalten bleiben?
2. das Bild wird beim ersten auswählen nur ca. 1 sek angezeigt -> es blinkt nur kurztz auf. Beim 2. auswählen funktioniert es dann fein.
Ne idee wo der Fehler liuegt?
Vielen Dank