BackgroundImage und DrawImage unterschiedlich?

Eroli

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein BackgroundImage auf dem immer wieder kleine Dreiecke gezeichnet werden. Diese Dreiecke ändern ständig ihre Position und somit ist es nötig, dass dieses BackgroundImage immerwieder neugezeichnet wird, damit man nur die aktuellen Dreiecke sieht.

Meine PictureBox ist genau 450px*600px groß und das Bild ebenfalls. Wenn ich nun das Bild am Anfang mittels BackgroundImage einfüge, dann passt es auch perfekt.

So, das städige Neuzeichnen des Hintergrundes mache ich mittels
C#:
            m_Graphics.DrawImage(m_BackgroundImage,0,0);
doch dabei wird das Bild ganz komisch rangezoomed und nix passt mehr. Wie kommt das?

Ich habe auch schon versucht den Ausgangszustand mittels m_Graphics.Save() zu speichern und dann immer wieder zu restoren, aber das klappt auch nicht.

Wo ist mein Problem?


Viele Grüße,
Eroli
 

Konstantin Gross

Erfahrenes Mitglied
Hallo,
ne Vermutung von mir währe, das du bei der PictureBox eventuell den SizeMode umgestellt hast. Also StretchImage statt Normal oder so.

Gruß
Konstantin
 

Eroli

Erfahrenes Mitglied
nein das ist es nicht....ich habe nix umgestellt.

Also wenn ich das Bild als BackgroundImage in der Designer-Ansicht der PictureBox wähle ist alles ok.
Mal ich das Bild über Graphics.DrawImage(BackgroundImage,0,0); dann wird das Bild irgendwie größer - keine Ahnung woran das liegt. Die Optionen wie StretchMode oder sowas rühre ich dabei alle gar nicht an...

Sonst noch Ideen?
 

Christian Kusmanow

Erfahrenes Mitglied
Wenn Du das Bild hinein malst, brauchst es auch nicht als Hintergrundbild einstellen. ;)
Probiere mal Graphics.DrawImageUnscaled oder beachte das was Konstantin gesagt hat.

//Edit:
Warum erzeugst ein Bild, wenn die Elemente das "Bildes" sich sowieso permanent verändern? Das verursacht doch einen unnötigen Overhead. Male die Dreiecke besser direkt in das Graphics Objekt und erst wenn Du von dem ganzen ein Bild brauchst, erzeugst Du es.
 
Zuletzt bearbeitet:

Eroli

Erfahrenes Mitglied
SizeMode ist aus.
Malen mit Graphics.DrawUnscaledImage bringt auch nichts. Selber Effekt.

Zu deinem Edit:
Ich brauche das Bild ständig! Und da es sich ständig ändert und ich ständig das aktuelle sehen möchte, muss ich es halt auch ständig aktualisieren.

Ich glaube ich mache euch mal eine Demo mit diesem komischen "Zoom".
 

Christian Kusmanow

Erfahrenes Mitglied
Ich brauche das Bild ständig! Und da es sich ständig ändert und ich ständig das aktuelle sehen möchte, muss ich es halt auch ständig aktualisieren.
Du benötigst das Bild ausserhalb des Programms, ja? Ansonsten reicht das was Du via GDI+ ind das (Graghics Objekt) zeichnest. Das BackroundImage wird sowieso von dem Control selber dort hinein gezeichnet. ;)

Ich glaube ich mache euch mal eine Demo mit diesem komischen "Zoom".
Endlich mal ein Vorschlag nach meinem Geschmack. Na dann zeig mal her. ;-)
 
Zuletzt bearbeitet:

Eroli

Erfahrenes Mitglied
So, bitteschön. Anbei die Demo - Ich finde das echt merkwürdig.

EDIT: Wobei ich mich da schon etwas vertan habe, da ich keine PictureBox benutze sondern dafür das Gesamte Control nehme. Aber das Problem ist immernoch dasselbe.
 

Anhänge

  • Demo2.zip
    71,9 KB · Aufrufe: 34
Zuletzt bearbeitet: