Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πως μπορούμε να έχουμε μία φόρμα με Shape απο εικόνα!!! Χρήσιμο Class

Îåêßíçóå áðü ôï ìÝëïò plavidas. Τελευταία δημοσίευση από το μέλος plavidas στις 11-06-2005, 21:36. Υπάρχουν 0 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-06-2005, 21:36 2682

    Cool [H] Πως μπορούμε να έχουμε μία φόρμα με Shape απο εικόνα!!! Χρήσιμο Class

    Μπαίνω κατευθείαν στο ψητό...

    Καταρχήν θα πρέπει να δημιουργήσουμε μία Class.
    Υπάρχουν δύο τρόποι...
    ο πρώτος (και δύσκολος...)Devil
    Γράφουμε των παρακάτω κώδικα χαρακτήρα - χαρακτήρα και τον σώνουμε... Snail

    ο δεύτερος [<:o)]
    ΑΝΤΙΓΡΑΦΟΥΜΕ των κώδικα και των κάνουμε paste στο VS Time

    Την κλάσης την καλούμε απλά
    Κάνουμε Declaration τη φόρμα μας:
    Private myForm As New BitmapShaπedForm

    και στο Page Load της φόρμας βάζουμε τα εξής:

    With myForm
          .ScanBitmap(Application.StartupPath() & "\..\MyBitmap.bmp")
          .SetFormToScannedBitmapSize(
    Me)
          .ApplyScannedBitmap(
    Me.BackgroundImage)
          .ApplyScannedBitmapRegion(
    Me.Region)
    End With

    Ελπίζω να μη γίνω κουραστικός...

    Imports System.Drawing
    Public Class BitmapShapedForm

    #
    Region " Declarations "

        Private myRegion As Region

        Private myBitmap As Bitmap

     

    #End Region

     

    #Region " Public Properties "

     

        Public ReadOnly Property GetScannedBitmapRegion() As Region

            '

            ' Return the region.

            '

            Get

                Return myRegion

            End Get

     

        End Property

     

        Public ReadOnly Property GetScannedBitmap() As Bitmap

            '

            ' Return the bitmap.

            '

            Get

                Return myBitmap

            End Get

     

        End Property

     

    #End Region

     

    #Region " Public Methods "

     

        Public Overloads Sub ApplyScannedBitmapRegion(ByRef theForm As Form)

     

            theForm.Region = myRegion.Clone()

     

        End Sub

     

        Public Overloads Sub ApplyScannedBitmapRegion(ByRef theRegion As Region)

     

            theRegion = myRegion.Clone()

     

        End Sub

     

        Public Overloads Sub ApplyScannedBitmap(ByRef theBitmap As Bitmap)

     

            theBitmap = myBitmap

     

        End Sub

     

        Public Overloads Sub ApplyScannedBitmap(ByRef theForm As Form)

     

            theForm.BackgroundImage = myBitmap

     

        End Sub

     

        Public Sub SetFormToScannedBitmapSize(ByRef theForm As Form)

     

            theForm.Height = myBitmap.Height

            theForm.Width = myBitmap.Width

     

        End Sub

     

        Public Overloads Sub ScanBitmap(ByVal theBitmapFile As String)

            Dim aBitmap As Bitmap = _LoadBitmapFile(theBitmapFile)

     

            If Not (aBitmap Is Nothing) Then

                _ScanBitmap(aBitmap, aBitmap.GetPixel(0, 0))

            End If

     

        End Sub

     

        Public Overloads Sub ScanBitmap(ByVal theBitmapFile As String, ByVal theTransparentColor As Color)

            Dim aBitmap As Bitmap = _LoadBitmapFile(theBitmapFile)

     

            If Not (aBitmap Is Nothing) Then

                _ScanBitmap(aBitmap, theTransparentColor)

            End If

     

        End Sub

     

        Public Overloads Sub ScanBitmap(ByVal theBitmap As Bitmap)

     

            If Not (theBitmap Is Nothing) Then

                _ScanBitmap(theBitmap, theBitmap.GetPixel(0, 0))

            End If

     

        End Sub

     

        Public Overloads Sub ScanBitmap(ByVal theBitmap As Bitmap, ByVal theTransparentColor As Color)

     

            If Not (theBitmap Is Nothing) Then

                _ScanBitmap(theBitmap, theTransparentColor)

            End If

     

        End Sub

     

        Public Overloads Sub ScanBitmap(ByVal theForm As Form, ByVal theTransparentColor As Color)

     

            If Not (theForm.BackgroundImage Is Nothing) Then

                _ScanBitmap(theForm.BackgroundImage, theTransparentColor)

            End If

     

        End Sub

     

        Public Overloads Sub SetFormBitmapSize(ByRef theForm As Form, ByVal theBitmap As Bitmap)

     

            theForm.Height = theBitmap.Height

            theForm.Width = theBitmap.Width

     

        End Sub

     

        Public Overloads Sub SetFormBitmapSize(ByRef theForm As Form, ByVal theBitmapFile As String)

            Dim aBitmap As Bitmap = _LoadBitmapFile(theBitmapFile)

     

            theForm.Height = aBitmap.Height

            theForm.Width = aBitmap.Width

     

        End Sub

     

        Public Overloads Sub SetFormBitmapSize(ByRef theForm As Size, ByVal theBitmap As Bitmap)

     

            theForm.Height = theBitmap.Height

            theForm.Width = theBitmap.Width

     

        End Sub

     

        Public Overloads Sub SetFormBitmapSize(ByRef theForm As Size, ByVal theBitmapFile As String)

            Dim aBitmap As Bitmap = _LoadBitmapFile(theBitmapFile)

     

            theForm.Height = aBitmap.Height

            theForm.Width = aBitmap.Width

     

        End Sub

     

        Public Overloads Sub ApplyBitmapFile(ByRef theForm As Form, ByVal theBitmapFile As String)

            Dim aBitmap As Bitmap = _LoadBitmapFile(theBitmapFile)

     

            theForm.BackgroundImage = aBitmap

     

        End Sub

     

        Public Overloads Sub ApplyBitmapFile(ByRef theBitmap As Bitmap, ByVal theBitmapFile As String)

     

            theBitmap = _LoadBitmapFile(theBitmapFile)

     

        End Sub

     

        Public Overloads Sub ApplyBitmap(ByRef theOldBitmap As Bitmap, ByRef theNewBitmap As Bitmap)

     

            theOldBitmap = theNewBitmap

     

        End Sub

     

        Public Overloads Sub ApplyBitmap(ByRef theForm As Form, ByRef theBitmap As Bitmap)

     

            theForm.BackgroundImage = theBitmap

     

        End Sub

     

        Public Overloads Sub ApplyRegion(ByRef theForm As Form, ByRef theRegion As Region)

     

            theForm.Region = theRegion

     

        End Sub

     

        Public Overloads Sub ApplyRegion(ByRef theOldRegion As Region, ByRef theNewRegion As Region)

     

            theOldRegion = theNewRegion

     

        End Sub

     

        Public Overloads Function GetBitmapRegion(ByVal theBitmapFile As String) As Region

            Dim aBitmap As Bitmap = _LoadBitmapFile(theBitmapFile)

     

            If Not (aBitmap Is Nothing) Then

                Return _GetBitmapRegion(aBitmap, aBitmap.GetPixel(0, 0))

            End If

     

        End Function

     

        Public Overloads Function GetBitmapRegion(ByVal theBitmap As Bitmap) As Region

     

            If Not (theBitmap Is Nothing) Then

                Return _GetBitmapRegion(theBitmap, theBitmap.GetPixel(0, 0))

            End If

     

        End Function

     

        Public Overloads Function GetBitmapRegion(ByVal theBitmap As Bitmap, ByVal theTransparentColor As Color) As Region

     

            If Not (theBitmap Is Nothing) Then

                Return _GetBitmapRegion(theBitmap, theTransparentColor)

            End If

     

        End Function

     

        Public Overloads Function GetBitmapRegion(ByVal theBitmapFile As String, ByVal theTransparentColor As Color) As Region

            Dim aBitmap As Bitmap = _LoadBitmapFile(theBitmapFile)

     

            If Not (aBitmap Is Nothing) Then

                Return _GetBitmapRegion(aBitmap, theTransparentColor)

            End If

     

        End Function

     

        Public Overloads Function GetBitmapRegion(ByVal theForm As Form, ByVal theTransparentColor As Color) As Region

     

            If Not (theForm.BackgroundImage Is Nothing) Then

                Return _GetBitmapRegion(theForm.BackgroundImage, theTransparentColor)

            End If

     

        End Function

     

    #End Region

     

    #Region " Private Methods "

     

        Private Sub _ScanBitmap(ByVal theBitmap As Bitmap, ByVal theTransparentColor As Color)

     

            '

            ' Scan the specified bitmap and create a region.

            '

            If theBitmap Is Nothing Then Exit Sub

     

            Dim aBackColor As Color = theTransparentColor

            Dim aHeight As Integer = theBitmap.Height - 1

            Dim aWidth As Integer = theBitmap.Width

            Dim aRow As Integer

            Dim aCol As Integer

     

            myBitmap = theBitmap

            myRegion = New Region(New Rectangle(0, 0, 0, 0))

     

            For aRow = 0 To aHeight

                Dim aStartCol As Integer = -1

                Dim aStopCol As Integer = -1

     

                For aCol = 0 To aWidth

                    If aCol = aWidth Then

                        If aStartCol <> -1 Then

                            aStopCol = aCol

     

                            Dim regUnion As New Region(New Rectangle(aStartCol, aRow, aStopCol - aStartCol, 1))

                            myRegion.Union(regUnion)

                            regUnion = Nothing

                        End If

                    Else

                        If Not theBitmap.GetPixel(aCol, aRow).Equals(aBackColor) Then

                            If aStartCol = -1 Then aStartCol = aCol

                        ElseIf theBitmap.GetPixel(aCol, aRow).Equals(aBackColor) Then

                            If aStartCol <> -1 Then

                                aStopCol = aCol

     

                                Dim regUnion As New Region(New Rectangle(aStartCol, aRow, aStopCol - aStartCol, 1))

                                myRegion.Union(regUnion)

                                regUnion = Nothing

     

                                aStartCol = -1

                                aStopCol = -1

                            End If

                        End If

                    End If

                Next

            Next

        End Sub

     

        Private Function _GetBitmapRegion(ByVal theBitmap As Bitmap, ByVal theTransparentColor As Color) As Region

            Dim aLocalReg As Region

     

            If theBitmap Is Nothing Then Return aLocalReg

     

            Dim aBackColor As Color = theTransparentColor

            Dim aHeight As Integer = theBitmap.Height - 1

            Dim aWidth As Integer = theBitmap.Width

            Dim aRow As Integer

            Dim aCol As Integer

     

            aLocalReg = New Region(New Rectangle(0, 0, 0, 0))

     

            For aRow = 0 To aHeight

                Dim aStartCol As Integer = -1

                Dim aStopCol As Integer = -1

     

                For aCol = 0 To aWidth

                    If aCol = aWidth Then

                        If aStartCol <> -1 Then

                            aStopCol = aCol

     

                            Dim regUnion As New Region(New Rectangle(aStartCol, aRow, aStopCol - aStartCol, 1))

                            aLocalReg.Union(regUnion)

                            regUnion = Nothing

                        End If

                    Else

                        If Not theBitmap.GetPixel(aCol, aRow).Equals(aBackColor) Then

                            If aStartCol = -1 Then aStartCol = aCol

                        ElseIf theBitmap.GetPixel(aCol, aRow).Equals(aBackColor) Then

                            If aStartCol <> -1 Then

                                aStopCol = aCol

                                Dim regUnion As New Region(New Rectangle(aStartCol, aRow, aStopCol - aStartCol, 1))

                                aLocalReg.Union(regUnion)

                                regUnion = Nothing

                                aStartCol = -1

                                aStopCol = -1

                            End If

                        End If

                    End If

                Next

            Next

            Return aLocalReg

        End Function

     

        Private Function _LoadBitmapFile(ByVal theBitmapFile As String) As Bitmap

     

            Return Bitmap.FromFile(theBitmapFile)

     

        End Function

     

    #End Region

     

    End Class

    Παναγιώτης Λαβίδας
    Software Developer



    Παναγιώτης Λαβίδας
    Software Developer
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems