.Net Win Forms Themes

[url]http://www.codeproject.com/Purgatory/splforms.asp[/url]
VB.NET Code:
Imports System
Public Class frmSplForm
    Inherits System.Windows.Forms.Form
    Private mouseOffset As Point
    Private isMouseDown As Boolean = False
    Private oTheme As Theme
    Private selectedBit As Boolean = False
Private Sub frmSplForm_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Try
            If cmbTheme.SelectedItem = "Theme1" And selectedBit = True Then
                'Get the Image Location
                Dim imageFile As Image = Image.FromFile(oTheme.BackGroundImage)
 
                Dim shape As New System.Drawing.Drawing2D.GraphicsPath
                'Create the Ellipse shape
                shape.AddEllipse(0, 0, imageFile.Width, imageFile.Height)
                'Clip the Shape to the form region
                Me.Region = New System.Drawing.Region(shape)
                'Draw image to screen.
                e.Graphics.DrawImage(imageFile, New PointF(0.0F, 0.0F))
 
            ElseIf cmbTheme.SelectedItem = "Theme2" And selectedBit = True Then
                'Get the Image Location
                Dim imageFile As Image = Image.FromFile(oTheme.BackGroundImage)
 
                Dim shape As New System.Drawing.Drawing2D.GraphicsPath
                Dim rect As New Rectangle(0, 0, imageFile.Width + 100, imageFile.Height + 100)
                'Create the Arc shape
                shape.StartFigure()
                shape.AddArc(rect, 0, 280)
                shape.CloseFigure()
 
                Dim myArray As Point() = {New Point(30, 200), New Point(200, 100), _
New Point(370, 200), New Point(300, 400), New Point(100, 400)}
                ' Create a GraphicsPath object and add a polygon.
                Dim myPath As New System.Drawing.Drawing2D.GraphicsPath
                myPath.AddPolygon(myArray)
 
                'Clip the Shape to the form region
                Me.Region = New System.Drawing.Region(shape)
 
                'Draw image to screen.
                e.Graphics.DrawImage(imageFile, New PointF(0.0F, 0.0F))
            End If
 
            selectedBit = False
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
 
    Private Sub frmSplForm_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        'Code for moving the form when dragged with mouse
        If isMouseDown Then
            Dim mousePos As Point = Control.MousePosition
            mousePos.Offset(mouseOffset.X, mouseOffset.Y)
            Me.Location = mousePos
        End If
    End Sub
 
    Private Sub frmSplForm_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
        ' Changes the isMouseDown field so that the form does
        ' not move unless the user is pressing the left mouse button.
        If e.Button = MouseButtons.Left Then
            isMouseDown = False
        End If
 
    End Sub
 
    Private Sub frmSplForm_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        Dim xOffset As Integer
        Dim yOffset As Integer
 
        If e.Button = MouseButtons.Left Then
            xOffset = -e.X - SystemInformation.FrameBorderSize.Width
            yOffset = -e.Y - SystemInformation.CaptionHeight - _
                    SystemInformation.FrameBorderSize.Height
            mouseOffset = New Point(xOffset, yOffset)
            isMouseDown = True
        End If
    End Sub
 
    Private Sub butDestroy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butDestroy.Click
        Me.Dispose()
        Application.Exit()
    End Sub
 
    Private Sub butOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butOK.Click
        If cmbTheme.SelectedItem = "Theme1" Then
            oTheme = New Theme1
            oTheme.SetTheme(Me)
            selectedBit = True
        ElseIf cmbTheme.SelectedItem = "Theme2" Then
            oTheme = New Theme2
            oTheme.SetTheme(Me)
            selectedBit = True
        End If
        Me.ResizeRedraw = True
        Me.Refresh()
    End Sub
End Class
 
----------------- Theme class --------------------------
Public MustInherit Class Theme
    Private sFrmBackGroundImage As String
    Private sFrmTransperncyColor As Color  
    Public Property BackGroundImage()
        Get
            Return sFrmBackGroundImage
        End Get
        Set(ByVal Value)
            sFrmBackGroundImage = Value
        End Set
    End Property
 
    Public Property TransperncyColor()
        Get
            Return sFrmTransperncyColor
        End Get
        Set(ByVal Value)
            sFrmTransperncyColor = Value
        End Set
    End Property
      Public MustOverride Function SetTheme(ByRef frmObj As Form) As Boolean
End Class
 
Public Class Theme1
    Inherits Theme
    Sub New()
        'Get the Image Location
        Dim fn As String = System.Environment.CurrentDirectory() & "\" & "Bitmap1.JPG"
        Me.BackGroundImage = fn
        Me.TransperncyColor = Color.FromArgb(192, 192, 255)
    End Sub
 
      Public Overrides Function SetTheme(ByRef frmObj As System.Windows.Forms.Form) As Boolean
        'set the transparency color
        frmObj.TransparencyKey = Me.TransperncyColor
        'set the form background image
        frmObj.BackgroundImage.FromFile(Me.BackGroundImage)
        'Change the control settings
        Dim cntl As Control
        For Each cntl In frmObj.Controls
            If TypeOf (cntl) Is Label Then
                cntl.ForeColor = Color.Yellow
                cntl.BackColor = Color.Blue
            ElseIf TypeOf (cntl) Is ComboBox Then
                cntl.ForeColor = Color.Blue
            Else
                cntl.ForeColor = Color.Black
            End If
        Next
    End Function  
End Class
 
Public Class Theme2
    Inherits Theme
    Sub New()
        'Get the Image Location
        Dim fn As String = System.Environment.CurrentDirectory() & "\" & "Bitmap2.JPG"
        Me.BackGroundImage = fn
        Me.TransperncyColor = Color.FromArgb(192, 192, 255)
    End Sub
 
    Public Overrides Function SetTheme(ByRef frmObj As System.Windows.Forms.Form) As Boolean
        'set the transparency color
        frmObj.TransparencyKey = Me.TransperncyColor
        'set the form background image
        frmObj.BackgroundImage.FromFile(Me.BackGroundImage)
        'Change the control settings
        Dim cntl As Control
        For Each cntl In frmObj.Controls
            If TypeOf (cntl) Is Label Then
                cntl.ForeColor = Color.Green
                cntl.BackColor = Color.Gold
            ElseIf TypeOf (cntl) Is ComboBox Then
                cntl.ForeColor = Color.DarkRed
            Else
                cntl.ForeColor = Color.DarkGreen
            End If
        Next
    End Function
 
End Class

你可能感兴趣的:(.net,职场,WinForm,休闲)