Laden...

kleineres Bitmap zentriert in ein größeres zeichnen

Letzter Beitrag vor 13 Jahren 9 Posts 2.264 Views
kleineres Bitmap zentriert in ein größeres zeichnen

Hallo c#-community,

hab mal wieder ein Problem. Möchte ein kleines Bitmap zentriert in einem größeren darstellen. Leider funktioniert das irgendwie nicht so richtig (was ich versucht habe) mit System.Drawing.Graphics.

Folgendes habe ich probiert:


Bitmap tempWorkBitmap = new Bitmap(originalBitmap.Width + 2 * offset, originalBitmap.height + 2 * offset);
Graphics g = Graphics.FromImage((Image)originalBitmap);
r.DrawImage(tempWorkBitmap, ofsett, offset);
return tempWorkBitmap;

Das Bild welches ich damit erzeuge bleibt irgendwie weiß. Habe schon geschaut, ob ich einfach nur die Form neuzeichen muss, blieb aber ohne Erfolg. Habe ich da irgendwo einen Denkfehler in meiner Funktion?

MfG
mirrowwinger

Hallo mirrowwinger,

du musst natürlich Graphics.FromImage von der Zielbitmap verwenden.

herbivore

ok das neue Bild ist jetzt erstellt, nur es sieht exakt aus, wie das andere, als wenn der offset keine Wirkung hat. Habe zum Test den Offset mal auf 10 Pixel gesetzt, da sollte ja eigentlich ein Unterschied zu sehen sein.

Hallo mirrowwinger,

und wie zeichne ich das original dann da rein?

naja, mit DrawImage.

herbivore

ups da war ich jetzt etwas langsam mit em editieren meines vorherigen Beitrages. Wie da schon erwähnt, hab ich das mit dem DrawImage schon hinbekommen, nur würde ich eine Art weißen/ farblosen Rand erwarten aber das Bild sieht exakt gleich aus, trotz Offset von 10 Pixeln.

Hallo mirrowwinger,

exakt gleich kann es ja nicht aussehen bzw. sein, weil die Zielbitmap ja größer ist als die Quellbitmap.

herbivore

Dies scheint aber beim betrachten der Bilder der Fall zu sein. Folgenden Quelltext habe ich verwendet:


Bitmap tempWorkBitmap = new Bitmap(originalBitmap.Width + 10, originalBitmap.Height + 10); //hab erstmal statischen Offset gewählt
Graphics g = Graphics.FromImage(TempWorkBitmap);
g.DrawImage(originalBitmap, 5, 5);
return(tempWorkBitmap);

Wenn ich nun Original und neues Bild übereinander lege haben markante Punkte immer noch den gleichen Abstand zum Bildrand.

Hallo,

so wie du zeichnest gilt

Zitat von: Graphics.DrawImage
Draws the specified image, using its original physical size, at the location specified by a coordinate pair.

schau dir mal die anderen Überladungen von DrawImage an - v.a. jene wo das Ziel-Rechteck angegeben werden kann.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

danke @herbivore und gfoidl das hat mir geholfen! 👍