tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1568
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    Abend,

    ich habe hier ein Problem, das ich nicht verstehe.
    Und zwar handelt es sich um eine Funktion, die ein Bild im Drawing.Bitmap-Format in eine bestimmte Anzahl von gleichgroßen Teilbildern (15x15 Pixel) teilen soll.

    Das mache ich mit dieser Funktion:

    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    ' _Picture (Drawing.Bitmap) ist das Bild, um das es geht. (150x150 Pixel groß)
     
     
    Public Overloads Function CutPicture(ByVal Pieces As Integer, ByVal HorizontalPieces As Integer, ByVal VerticalPieces As Integer) As Bitmap()
        If _Picture Is Nothing Or (HorizontalPieces = 0 And VerticalPieces = 0) Then Return Nothing
     
        Dim Piece(Pieces - 1) As Bitmap
        For i = 1 To HorizontalPieces
            For j = 1 To VerticalPieces
                Piece(i + j - 2) = _Picture.Clone(New Rectangle(15 * (j - 1), 15 * (i - 1), 15, 15), _Picture.PixelFormat)  
            Next
        Next
     
        Return Piece
    End Function

    Und so rufe ich sie auf:
    Code vbnet:
    1
    2
    3
    4
    5
    
    Dim i As Integer
    For Each item In CutPicture(20, 10, 10)
        i += 1
        write(i, item)
    Next

    Hier wird die Exception dann letztendlich geworfen:
    Code vbnet:
    1
    2
    3
    4
    
    Sub write(ByVal num As Integer, ByVal btm As Bitmap)
        'Hier: ExternalExeption: Allgemeiner Fehler in GDI+
        btm.Save(String.Format("X:\Pics\Pic{0}.bmp", num))
    End Sub

    Ich habe keine Ahnung, was da zu machen ist, oder was mein Fehler ist, da die Beschreibung der Exception und die Onlinehilfe der MSDN nicht wirklich aussagekräftig sind.

    Ich hoffe ihr könnt mir helfen.

    Grüße Masterclavat
     

  2. #2
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    tritt der Fehler beim Speichern oder beim clonen auf?
    (ok seh grad im Save )

    Ich persönlich traue der Clone Methode nicht und ist glaube auch nicht gerade performant ich würde die Bilder selbst direkt reinzeichen über DrawImage des Graphics Objekts

    ungefähr so:
    Code :
    1
    2
    3
    4
    5
    6
    
    BItmap bmp=new Bitmap(width, height)
    using(Graphics g=Graphics.FromImage(bmp))
    {
        g.DrawBitmap(bild, Ziel_Koordinaten, Quell_Koordinaten, Format.Pixel); //musste mal schaun was genau für Parameter gehn
        g.Flush(); //zum zeichen auffordern
    }
    Laut meinen Erfahrungen (is bissel her) ist diese Methode schneller.

    Das ist erstmal der erste Anhaltspunkt den ich seh.
    Probiers einfach ma aus.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  3. #3
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    Dankeschön Spyke, dein Post hat mich auf eine sehr gute Spur geführt. Ich denke, ich weiß jetzt wie's.

    Ich werde das morgen zuendebringen.

    Gute Nacht.
     

Ähnliche Themen

  1. Allgemeiner Fehler in GDI+
    Von GerhardSchrader im Forum .NET Grafik und Sound
    Antworten: 3
    Letzter Beitrag: 29.11.08, 18:53
  2. Antworten: 0
    Letzter Beitrag: 27.12.06, 12:34
  3. Allgemeiner Kurs zu PS 7.0 oder 8.0
    Von Lost Heaven im Forum Photoshop
    Antworten: 3
    Letzter Beitrag: 09.03.04, 06:12
  4. Antworten: 5
    Letzter Beitrag: 16.09.02, 17:04
  5. Antworten: 2
    Letzter Beitrag: 09.07.02, 11:51