Autor Beitrag
omvo02
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 02.11.08 02:30 
Hallo,

wie kopiert man mit DrawImage einen Teil eines Bitmaps in ein anderes Bitmap?
Das andere Bitmap soll dann nur diesen Ausschnitt (Teil) enthalten.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Bitmap CopyPart(Bitmap Quelle, Rectangle Teil)
{
Bitmap Ziel = new Bitmap(Teil.Width, Teil.Height);
Graphics g = Graphics.FromImage(Quelle);

g.DrawImage(Quelle, ?);
...
}


Vielen Dank!

omvo02

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 02.11.08 11:31 
Versuch es einmal mit diesem Overload:
Zitat:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public void DrawImage(
    Image image,
    int x,
    int y,
    Rectangle srcRect,
    GraphicsUnit srcUnit
)


Parameter

image
Typ: System.Drawing..::.Image

Das zu zeichnende Image.

x
Typ: System..::.Int32

Die x-Koordinate der oberen linken Ecke des gezeichneten Bilds.

y
Typ: System..::.Int32

Die y-Koordinate der oberen linken Ecke des gezeichneten Bilds.

srcRect
Typ: System.Drawing..::.Rectangle

Rectangle-Struktur, die den zu zeichnenden Teil des image-Objekts angibt.

srcUnit
Typ: System.Drawing..::.GraphicsUnit

Member der GraphicsUnit-Enumeration, der die Maßeinheiten für den srcRect-Parameter angibt.

Also erst die Zielkoordinaten, dann das Quellrechteck.

_________________
>λ=
omvo02 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 02.11.08 15:52 
danke für deine Antwort, Kha.

Gibt es irgendeine Möglichkeit die GraphicsUnit.Pixel-Angabe, die bei diesem Aufruf erforderlich ist, zu umgehen? Gibt es eine Möglichkeit eine eigene GraphicsUnit zu erstellen, die der Pixelgröße meines *.jpg entspricht?
Sobald ich DrawImage so benutze, dass ich GraphicsUnit angeben muss, bekomme ich nicht den ganzen Ausschnitt (dies habe ich in meinem Post "Bildverkleinern Originalkoordinaten" beschrieben)?

Danke auch, dass du dir die Mühe gemacht hast, den Quellcode in meinem Post in einen Code-Block zu setzen, hatte leider ich vergessen.
omvo02 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 02.11.08 16:12 
Also ich bin inzwischen bei diesem Problem etwas weiter gekommen.
Man muss die Auflösung des Quell-Bitmaps auf die Auflösung des Graphics-Objektes setzen:
ausblenden C#-Quelltext
1:
Quelle.SetResolution(g.DpiX, g.DpiY);