Module Extensions
''' <summary>
''' Fügt Bilder eines Bildbandes zu der ImageList hinzu.
''' </summary>
''' <paramref name="il">Die zu editierende ImageList.</paramref>
''' <param name="value">Der Bildstreifen.</param>
''' <param name="direction">Die Ausrichtung des Bildbandes.</param>
''' <param name="isQuadSize"><c>True</c>, wenn die Teilbilder quadratisch sind, andernfalls <c>False</c>. Wird <c>False</c> übergeben wird die <c>ImageSize</c>-Eigenschaft zur Größenbestimmung genutzt.</param>
''' <exception cref="System.ArgumentNullException">Wird ausgelöst, wenn <c>value</c> <c>null</c> ist</exception>
''' <exception cref="System.ArgumentOutOfRangeException">Wird ausgelöst, wenn <c>items</c> kleiner gleich 0 ist oder größer als die Anzahl der Pixel von Value in der angegebenen Ausrichtung.</exception>
''' <exception cref="System.ArgumentException">Wird ausgelöst, wenn <c>direction</c> einen ungültigen Wert hat oder wenn die Höhe und die Breite nicht entsprechend der Ausrichtung durch einander teilbar sind bzw. keine Quadratischen Bilder entstehen würden.</exception>
<System.Runtime.CompilerServices.Extension> _
Public Sub AddImageStrip(il As ImageList, value As Image, direction As StripDirection, isQuadSize As Boolean)
'Fehlerbehandlung übernimmt eine Überladung dieser Methode
Dim val1 As Integer = 0, val2 As Integer = 0
If isQuadSize Then
'Teilbilder sind Quadratisch
If direction = StripDirection.Horizontal Then
val1 = value.Width
val2 = value.Height
Else
val1 = value.Height
val2 = value.Width
End If
'Größe an der ImageSize-Eigenschaft festlegen
ElseIf direction = StripDirection.Horizontal Then
val1 = value.Width
val2 = il.ImageSize.Width
Else
val1 = value.Height
val2 = il.ImageSize.Height
End If
'erste Fehlerfindung
If (direction = StripDirection.Horizontal AndAlso CDbl(value.Width) / CDbl(il.ImageSize.Width) <> CInt(Math.Truncate(CDbl(value.Width) / CDbl(il.ImageSize.Width)))) OrElse direction = StripDirection.Vertical AndAlso CDbl(value.Height) / CDbl(il.ImageSize.Height) <> CInt(Math.Truncate(CDbl(value.Height) / CDbl(il.ImageSize.Height))) Then
Throw New ArgumentException("value", "Size do not match the image.")
End If
AddImageStrip(il, value, direction, val1 \ val2)
End Sub
''' <summary>
''' Fügt Bilder eines Bildbandes zu der ImageList hinzu.
''' </summary>
''' <paramref name="il">Die zu editierende ImageList.</paramref>
''' <param name="value">Der Bildstreifen.</param>
''' <param name="direction">Die Ausrichtung des Bildbandes.</param>
''' <param name="items">Die Anzahl der einzelnen Elemente in dem Bildstreifen.</param>
''' <exception cref="System.ArgumentNullException">Wird ausgelöst, wenn <c>value</c> <c>null</c> ist</exception>
''' <exception cref="System.ArgumentOutOfRangeException">Wird ausgelöst, wenn <c>items</c> kleiner gleich 0 ist oder größer als die Anzahl der Pixel von Value in der angegebenen Ausrichtung.</exception>
''' <exception cref="System.ArgumentException">Wird ausgelöst, wenn <c>direction</c> einen ungültigen Wert hat.</exception>
<System.Runtime.CompilerServices.Extension> _
Public Sub AddImageStrip(il As ImageList, value As Image, direction As StripDirection, items As Integer)
If value Is Nothing Then
'Fehler...
Throw New ArgumentNullException("value")
End If
If items <= 0 OrElse (items > value.Height AndAlso direction = StripDirection.Vertical) OrElse (items > value.Width AndAlso direction = StripDirection.Horizontal) Then
Throw New ArgumentOutOfRangeException("items")
End If
If direction <> StripDirection.Horizontal AndAlso direction <> StripDirection.Vertical Then
Throw New ArgumentException("direction")
End If
If direction = StripDirection.Vertical Then
'Größe der Bilder festlegen
il.ImageSize = New System.Drawing.Size(value.Width, value.Height / items)
Else
il.ImageSize = New System.Drawing.Size(value.Width / items, value.Height)
End If
For i As Integer = 0 To items - 1
If direction = StripDirection.Vertical Then
'Bilder zur Auflistung hinzufügen
il.Images.Add(value.CropImage(New Rectangle(0, i * value.Height / items, value.Width, value.Height / items)))
Else
il.Images.Add(value.CropImage(New Rectangle(i * value.Width / items, 0, value.Width / items, value.Height)))
End If
Next
End Sub
''' <summary>
''' Schneidet ein Teilstück eines Bildes aus
''' </summary>
''' <paramref name="value">Das ursprüngliche Bild.</paramref>
''' <param name="cropArea">Der Bereich des Bildes, der zurück gegeben werden soll.</param>
''' <returns>Das Teilstück des Bildes.</returns>
''' <exception cref="System.ArgumentException">Wird ausgelöst, wenn <c>cropArea</c> einen Wert beinhaltet, der außerhalb des Bildes liegt.</exception>
''' <exception cref="System.ArgumentNullException">Wird ausgelöst, wenn value <c>null</c> ist.</exception>
<System.Runtime.CompilerServices.Extension> _
Public Function CropImage(value As Image, cropArea As Rectangle) As Bitmap
If cropArea.Left < 0 OrElse cropArea.Top < 0 OrElse cropArea.Right > value.Width OrElse cropArea.Bottom > value.Height Then
'Fehler...
Throw New ArgumentException("cropArea")
End If
If value Is Nothing Then
Throw New ArgumentNullException("value")
End If
Return New Bitmap(value).Clone(cropArea, value.PixelFormat)
End Function
''' <summary>
''' Stellt Ausrichtungen für ein Bildband dar.
''' </summary>
Public Enum StripDirection
''' <summary>
''' Das Bildband ist vertikal ausgerichtet.
''' </summary>
Vertical
''' <summary>
''' Das Bildband ist horizontal ausgerichtet.
''' </summary>
Horizontal
End Enum
End Module