Wie zeichne ich in VB.NET 2003 einen Ausschnitt aus einer vorhandenen Grafik?

Antwort vom

**In VB.NET 2003 zeichnest du einen Bildausschnitt mit `Graphics.DrawImage`, indem du ein Quell-Rechteck aus der vorhandenen Grafik auf ein Ziel-Rechteck zeichnest.** ```vbnet Dim bmp As Bitmap = CType(Image.FromFile("C:\bild.jpg"), Bitmap) Dim g As Graphics = Me.CreateGraphics() Dim ziel As New Rectangle(10, 10, 100, 80) Dim quelle As New Rectangle(50, 30, 100, 80) g.DrawImage(bmp, ziel, quelle, GraphicsUnit.Pixel) ``` ## Was dabei passiert `quelle` bestimmt den Ausschnitt aus dem Originalbild. `ziel` bestimmt, wo dieser Ausschnitt auf dem Formular erscheint und in welcher Größe er gezeichnet wird. Wenn `ziel` und `quelle` gleich groß sind, wird der Ausschnitt 1:1 gezeichnet. Wenn `ziel` größer oder kleiner ist, wird der Ausschnitt skaliert. ## Wichtig in VB.NET 2003 Direkt mit `Me.CreateGraphics()` zu zeichnen funktioniert nur kurzfristig; beim Neuzeichnen des Fensters ist das Bild wieder weg. Sauber ist es, im `Paint`-Ereignis zu zeichnen: ```vbnet Private bmp As Bitmap Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load bmp = CType(Image.FromFile("C:\bild.jpg"), Bitmap) End Sub Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint Dim ziel As New Rectangle(10, 10, 100, 80) Dim quelle As New Rectangle(50, 30, 100, 80) e.Graphics.DrawImage(bmp, ziel, quelle, GraphicsUnit.Pixel) End Sub ``` ## Typischer Denkfehler Viele schneiden das Bild vorher mit viel Zusatzcode aus. Das ist oft unnötig. Wenn du den Ausschnitt nur anzeigen willst, reicht `DrawImage` mit Quellrechteck völlig aus. Nur wenn du wirklich ein neues separates Teilbild speichern oder weiterverarbeiten willst, solltest du ein neues Bitmap erzeugen.

Kategorie: Technik Tags: VB.NET Grafik Ausschnitt

Verwandte Fragen

Wie bewege ich in VB.NET 2003 ein großes Bild in einem kleineren Panel mit AutoScroll per MouseDown, MouseMove und MouseUp?

Ja: Du verschiebst dabei nicht das Bild selbst „frei“, sondern änderst im Panel mit AutoScroll = True die Scroll-Position per Mausziehen. Entscheidend ist, dass du dir beim MouseDown...