none
Ich würde gerne ein Objekt (bitmap array) umgewandelt in eine Region, mit Farbe füllen. RRS feed

  • Frage

  • Nach der Anwendung eines gefundenen Codes kann ich zumindest ein gescantes Bild darstellen.

    Public Class Form1
        Sub LockUnlockBitsExample(ByVal e As PaintEventArgs)
    
            'Create a new bitmap.
            Dim bmp As Bitmap = New Bitmap("C:\entwurf.bmp")
    
            'Lock the bitmap's bits.  
            Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height)
            Dim bmpData As System.Drawing.Imaging.BitmapData =
                bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
                bmp.PixelFormat)
    
            'Get the address of the first line.
            Dim ptr As IntPtr = bmpData.Scan0
    
            'Declare an array to hold the bytes of the bitmap.
            Dim bytes As Integer = Math.Abs(bmpData.Stride) * bmp.Height
            Dim rgbValues(bytes) As Byte
    
            'Copy the RGB values into the array.
            System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes)
    
            'Set every third value to 255. A 24bpp bitmap will look red.  
            For counter As Integer = 2 To rgbValues.Length - 1 Step 3
                rgbValues(counter) = 255
            Next
            'Copy the RGB values back to the bitmap
            System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes)
    
            'Unlock the bits.
            bmp.UnlockBits(bmpData)
    
            'Draw the modified image.
            e.Graphics.DrawImage(bmp, 4, 4)
    
        End Sub
    
        Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
            LockUnlockBitsExample(e)
        End Sub
    End Class

    https://1drv.ms/u/s!AuqiErX9tbF2kiPSnOG-ShoW9TyO?e=MnuqFY

    Der Link ist das Bild für den Pfad C:\entwurf.png

    Ich würde die darstellbare Form mit Farbe füllen. Um eine Möglichkeit zu finden habe ich die FillRegion Methode versucht umzusetzen.

    https://docs.microsoft.com/en-us/dotnet/api/system.drawing.graphics.fillregion?view=netframework-4.8

     
    • Bearbeitet Stefan Mihael Rihar Sonntag, 27. Oktober 2019 19:27 Ich war mir nicht sicher nach der Anwendung einen Link einzufügen auch einen Link erreicht zu haben, deswegen klickte ich auf senden und ohne Erfolg einen Link zu sehen danach auf bearbeiten.
    • Bearbeitet Stefan FalzModerator Sonntag, 27. Oktober 2019 20:30 Links als Links formatiert
    Sonntag, 27. Oktober 2019 19:20

Antworten

  • Hallo Stefan,

    Kannst Du Deinen Code angeben, in dem die FillRegion-Methode aufgerufen wurde? Wenn die oben genannte Methode Deinen Anforderungen nicht entspricht, kannst Du versuchen, die FloodFill-Methode zu verwenden, wie in diesem Artikel beschrieben wird:
    Painting Fill Function

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.



    Montag, 28. Oktober 2019 13:10
    Administrator

Alle Antworten

  • Hallo Stefan,

    Kannst Du Deinen Code angeben, in dem die FillRegion-Methode aufgerufen wurde? Wenn die oben genannte Methode Deinen Anforderungen nicht entspricht, kannst Du versuchen, die FloodFill-Methode zu verwenden, wie in diesem Artikel beschrieben wird:
    Painting Fill Function

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.



    Montag, 28. Oktober 2019 13:10
    Administrator
  • Guten Tag Ivan,

    ich habe den Link den du beigetragen hast und die Informationen zu denen er führte mit meinem Wissen kombiniert.

    John Anthony Oliver hat einen Code zur Verfügung gestellt den ich übernommen habe. Die Zeilen

    #Region "MakeBitmap"
        Private Sub MakeBitmap()
    
        End Sub
    #End Region ' MakeBitmap


    habe ich mit meinen Zeilen 

            m_Bitmap = New Bitmap("C:\entwurf.png")
            Dim test_zeilenumbruch As Graphics = Graphics.FromImage(m_Bitmap)
            test_zeilenumbruch.Dispose()

    ergänzt und somit mein Ziel erreicht. Ich konnte nun jede Beliebige geschlossene Form sowohl innen wie aussen mit Farbe füllen.

    Das nächste Ziel, jede beliebige Form in eine andere Form zu ändern, scheint nun da ich ein wenig die Möglichkeiten von VB.Net kennen gelernt habe nicht nut theorie zu sein.

    Danke für deine Hilfe.

    Mit freundlichem Gruß

    Stefan

    Dienstag, 29. Oktober 2019 11:14