vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Grafik und Font · Bilder und Icons   |   VB-Versionen: VB2005, VB200808.06.10
Beliebigen Ausschnitt aus Bild clonen

Eine Klasse, mit der sich ein bestimmter Bildbereich aus einem Gesamtbild auslesen und anzeigen lässt.

Autor:   Christoff BitterBewertung:     [ Jetzt bewerten ]Views:  15.495 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Unter VB6 gab es ein Tool namens Picclip. Mit ihm konnte man über ein Bild eine Matrix legen und die Ausschnitte über das entsprechende Koordinatensystem auslesen. Ursprünglich war dieses Tool für eine Animation zuständig. Doch zur Programmierung kleiner Spiele konnte man es auch gut gebrauchen.

Hier nun eine Lösung in VB.NET, da die Original OCX in .NET nicht sehr stabil läuft.

Die Klasse besteht aus den Eigenschaften:

  • col = Anzahl der Spalten
  • row = Anzahl der Zeilen und der Methode
  • GetPicClip(bm, x, y)
    (x und y geben die Position des Ausschnittes an)

Imports System.Drawing.Drawing2D
Public Class ImageClipping
 
  Private _Col As Integer         ' Anzahl der Spalten
  Private _Row As Integer         ' Anzahl der Zeilen
  Private _Result As Bitmap       ' Bildausschnitt
  Private _Width As Integer       ' Breite Bildausschnitt
  Private _Height As Integer      ' Höhe Bildausschnitt
  Private _X, _Y As Integer       ' Position Bildausschnitt
 
  Property Col() As Integer
    Get
      Return _Col
    End Get
    Set(ByVal value As Integer)
      _Col = value
    End Set
  End Property
 
  Property Row() As Integer
    Get
      Return _Row
    End Get
    Set(ByVal value As Integer)
      _Row = value
    End Set
  End Property
 
  Function GetPicClip(ByVal bm As Bitmap, ByVal _X As Integer, _
    ByVal _Y As Integer) As Bitmap
 
    Dim Width, Height As Integer
 
    Width = bm.Width \ _Col         ' Berechnen der Breite des Matrixfeldes
    Height = bm.Height \ _Row       ' Berechnen der Höhe des Matrixfeldes
 
    _Y = (_Y - 1) * Height          ' Posotion im Original berechnen
    _X = (_X - 1) * Width
 
    ' Bildausschnitt clonen
    _Result = bm.Clone(New Rectangle(_X, _Y, Width, Height),_
      bm.PixelFormat)
 
    Return _Result                  ' Wert zurückgeben
  End Function
 
End Class

Aufrufbeispiel:

' Instanz der Klasse erstellen
Dim ic As New ImageClipping
 
' Bitmap erstellen (aus Datei laden)
Dim Filename As String = "C:\Bild1.bmp"
Dim oBitmap As New Bitmap(Filename)
 
' Sizemode automatisch anpassen
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
 
' Bildmatrix festlegen
ic.Col = 5  ' Definiere Anzahl der Spalten im Bild
ic.Row = 5  ' Definiere Anzahl der Zeilen im Bild
 
' Bildbereich auslesen und anzeigen
' Die Parameter 5,5 geben die Position in der Bildmatrix an
PictureBox1.Image = ic.GetPicClip(oBitmap, 5, 5)

Dieser Tipp wurde bereits 15.495 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel