Files
ECO2-OD/ArinWarev1/Control/YkCtl.vb
2018-12-09 20:18:51 +09:00

161 lines
5.3 KiB
VB.net

Public Class YkCtl
Structure SM
Private vStyle As Drawing2D.HatchStyle
Private vwidth As Single, vHeight As Single
Private vFColor As Color
Private vBColor As Color
Property Style() As Drawing2D.HatchStyle
Get
Return Me.vStyle
End Get
Set(ByVal value As Drawing2D.HatchStyle)
Me.vStyle = value
End Set
End Property
Property Width() As Single
Get
Return Me.vwidth
End Get
Set(ByVal value As Single)
Me.vwidth = value
End Set
End Property
Property Height() As Single
Get
Return Me.vHeight
End Get
Set(ByVal value As Single)
Me.vHeight = value
End Set
End Property
Property FColor() As Color
Get
Return Me.vFColor
End Get
Set(ByVal value As Color)
Me.vFColor = value
End Set
End Property
Property BColor() As Color
Get
Return Me.vBColor
End Get
Set(ByVal value As Color)
Me.vBColor = value
End Set
End Property
End Structure
Dim vMFilltype(0) As SM
Dim vVertical As Boolean = True
Dim vMaxWidth As Single = Me.Width '//총너비
Property MaxSize() As Single
Get
Return (vMaxWidth)
End Get
Set(ByVal value As Single)
Me.vMaxWidth = value
Me.Refresh()
End Set
End Property
Property Vertical() As Boolean '//그림이 세로형태?
Get
Return (vVertical)
End Get
Set(ByVal value As Boolean)
Me.vVertical = value
Me.Refresh()
' MsgBox(value)
End Set
End Property
Property M1FillType() As SM()
Get
Return (Me.vMFilltype)
End Get
Set(ByVal value As SM())
Me.vMFilltype = value
Me.Refresh()
' MsgBox("sdf")
End Set
End Property
Private Sub UserControl1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
If Me.vMFilltype Is Nothing OrElse Me.MaxSize <= 0 Then Return
Dim G As Graphics = e.Graphics
Dim Rect As Rectangle
Dim W As Single
' If Me.MaxWidth <> 0 Then
For i As Integer = 0 To Me.M1FillType.GetUpperBound(0) '//갯수만큼 돈다
'//해당 사각형의 Rectangle 을 생성
If i = 0 Then
If Me.Vertical Then
W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(0, 5, W, Me.Height - 10)
Else
W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(5, 0, Me.Width - 10, W)
End If
Else
If Me.Vertical Then
W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(GetWidth(i), 5, W, Me.Height - 10)
Else
W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(5, GetWidth(i), Me.Width - 10, W)
End If
End If
Try
Dim B As New System.Drawing.Drawing2D.HatchBrush(Me.M1FillType(i).Style, Me.M1FillType(i).FColor, Me.M1FillType(i).BColor)
G.FillRectangle(B, Rect)
Catch ex As Exception
End Try
Next
For i As Integer = 0 To Me.M1FillType.GetUpperBound(0) '//갯수만큼 돈다
If Vertical Then
If i = 0 Then
W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(0, 5, W, Me.Height - 10)
Else
W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(GetWidth(i), 5, W, Me.Height - 10)
End If
If i <> 0 Then ' AndAlso i <> Me.M1FillType.GetUpperBound(0) Then
G.DrawLine(New Pen(Color.Black), Rect.X, 5, Rect.X, Me.Height - 5)
End If
Else
If i = 0 Then
W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(5, 0, Me.Width - 10, W)
Else
W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width
Rect = New Rectangle(5, GetWidth(i), Me.Width - 10, W)
End If
If i <> 0 Then 'AndAlso i <> Me.M1FillType.GetUpperBound(0) Then
G.DrawLine(New Pen(Color.Black), 5, Rect.Y, Me.Width - 5, Rect.Y)
End If
End If
Next
G.DrawRectangle(New Pen(Color.Black), New Rectangle(0, 0, Me.Width - 2, Me.Height - 2))
G.Dispose()
End Sub
Private Function GetWidth(ByVal idx As Integer) As Single
Dim Retval As Single = 0
For i As Integer = 0 To idx - 1
Retval += IIf(Me.Vertical = True, Me.Width, Me.Height) / Me.MaxSize * Me.M1FillType(i).Width
Next
Return Retval
End Function
End Class