.Net Win Forms Themes
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
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
'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 |


feishunji
博客统计信息
热门文章
最新评论
友情链接