Parallan
Cadet 3rd Year
- Registriert
- Okt. 2006
- Beiträge
- 40
Hallo,
ich benutz GDI+, um Bilder anzuzeigen. Die beiden Bilder SelectedBackgroundImage und BackgroundImage werden direkt nacheinander geladen (keine Fehler beim laden der 2 .bmp-Dateien; beide haben dieselbe (Datei-)Größe (bestätigt von GetWidth und GetHeight)).
Beim Zeichnen sieht das dann allerding so aus, dass bei "selected=false;" alles korrekt angezeigt wird, bei "selected=true;" das Bild aber skaliert wird (geschätzter Faktor: 1.5).
Vorher werden mit "graphics" keine anderen Transformationen durchgeführt. Ich verstehe also nicht ganz, warum das Bild skaliert dargestellt wird. Sogar, wenn ich den Parameter "selected" manuell von "false" auf "true" stell, erhalte ich das falsche Resultet.
Die Funktion wird in der Window-Callback in der Message WM_MOUSEMOVE ausgeführt.
mfg
Parallan
ich benutz GDI+, um Bilder anzuzeigen. Die beiden Bilder SelectedBackgroundImage und BackgroundImage werden direkt nacheinander geladen (keine Fehler beim laden der 2 .bmp-Dateien; beide haben dieselbe (Datei-)Größe (bestätigt von GetWidth und GetHeight)).
Beim Zeichnen sieht das dann allerding so aus, dass bei "selected=false;" alles korrekt angezeigt wird, bei "selected=true;" das Bild aber skaliert wird (geschätzter Faktor: 1.5).
Vorher werden mit "graphics" keine anderen Transformationen durchgeführt. Ich verstehe also nicht ganz, warum das Bild skaliert dargestellt wird. Sogar, wenn ich den Parameter "selected" manuell von "false" auf "true" stell, erhalte ich das falsche Resultet.
Die Funktion wird in der Window-Callback in der Message WM_MOUSEMOVE ausgeführt.
Code:
<Bilder laden:>
Bitmap* BackgroundImage = new Bitmap(_T("BGImg.bmp"));
Bitmap* SelectedBackgroundImage = new Bitmap(_T("BGImgSelected.bmp"));
//werden geladen, haben aber zur Zeit des Ausführens (laut Debugger) diese Werte (sollten sie auch)
Rect ButtonRect(50, 50, 200, 100);
Point ImageOffset(0, 0);
Point SelectedImageOffset(0, 0);
<...>
Graphics graphics(hWnd);
<...>
graphics.ResetTransform();
GraphicsContainer containerdata = graphics.BeginContainer();
graphics.SetClip(ButtonRect);
graphics.TranslateTransform((float)ButtonRect.X, (float)ButtonRect.Y);
if(selected)
{
/*
so gehts korrekt:
RectF drawrect((float)SelectedImageOffset.X, (float)SelectedImageOffset.Y,
(float)SelectedBackgroundImage->GetWidt(), (float)SelectedBackgroundImage->GetHeight());
graphics.DrawImage(SelectedBackgroundImage, drawrect);
*/
//so gehts nicht:
graphics.DrawImage(SelectedBackgroundImage, SelectedImageOffset);
}
else
{
graphics.DrawImage(BackgroundImage, ImageOffset);
}
mfg
Parallan
Zuletzt bearbeitet: