-
-
Notifications
You must be signed in to change notification settings - Fork 221
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
41 changed files
with
2,616 additions
and
1,320 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<Border x:Name="PanBack" x:Class="MyIconTextButton" | ||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||
HorizontalAlignment="Center" VerticalAlignment="Center" Background="{StaticResource ColorBrushSemiTransparent}" CornerRadius="13.5" MinHeight="27" MaxHeight="27"> | ||
<StackPanel Orientation="Horizontal"> | ||
<Path x:Name="ShapeLogo" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" Margin="12,0,0,0" Stretch="Uniform" Fill="White" MaxHeight="16" MaxWidth="16" VerticalAlignment="Center" /> | ||
<TextBlock x:Name="LabText" VerticalAlignment="Center" Grid.Column="1" Foreground="White" Margin="7,0,12,1" Grid.ColumnSpan="2" SnapsToDevicePixels="False" UseLayoutRounding="False" /> | ||
</StackPanel> | ||
</Border> |
180 changes: 180 additions & 0 deletions
180
Plain Craft Launcher 2/Controls/MyIconTextButton.xaml.vb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,180 @@ | ||
Public Class MyIconTextButton | ||
|
||
'基础 | ||
|
||
Public Uuid As Integer = GetUuid() | ||
Public Event Check(sender As Object, raiseByMouse As Boolean) | ||
Public Event Change(sender As Object, raiseByMouse As Boolean) | ||
Public Sub RaiseChange() | ||
RaiseEvent Change(Me, False) | ||
End Sub '使外部程序可以引发本控件的 Change 事件 | ||
|
||
'自定义属性 | ||
|
||
Public Property Logo As String | ||
Get | ||
Return ShapeLogo.Data.ToString | ||
End Get | ||
Set(value As String) | ||
ShapeLogo.Data = (New GeometryConverter).ConvertFromString(value) | ||
End Set | ||
End Property | ||
Private _LogoScale As Double = 1 | ||
Public Property LogoScale() As Double | ||
Get | ||
Return _LogoScale | ||
End Get | ||
Set(value As Double) | ||
_LogoScale = value | ||
If Not IsNothing(ShapeLogo) Then ShapeLogo.RenderTransform = New ScaleTransform With {.ScaleX = LogoScale, .ScaleY = LogoScale} | ||
End Set | ||
End Property | ||
|
||
Public Property Text As String | ||
Get | ||
Return GetValue(TextProperty) | ||
End Get | ||
Set(value As String) | ||
SetValue(TextProperty, value) | ||
End Set | ||
End Property '内容 | ||
Public Shared ReadOnly TextProperty As DependencyProperty = DependencyProperty.Register("Text", GetType(String), GetType(MyIconTextButton), New PropertyMetadata(New PropertyChangedCallback( | ||
Sub(sender As DependencyObject, e As DependencyPropertyChangedEventArgs) | ||
If Not IsNothing(sender) Then CType(sender, MyIconTextButton).LabText.Text = e.NewValue | ||
End Sub))) | ||
Public Enum ColorState | ||
Black | ||
Highlight | ||
End Enum | ||
Private _ColorType As ColorState = ColorState.Black | ||
Public Property ColorType As ColorState | ||
Get | ||
Return _ColorType | ||
End Get | ||
Set(value As ColorState) | ||
_ColorType = value | ||
RefreshColor() | ||
End Set | ||
End Property '颜色类别 | ||
|
||
'点击事件 | ||
|
||
Public Event Click(sender As Object, e As RouteEventArgs) | ||
Private IsMouseDown As Boolean = False | ||
Private Sub MyIconTextButton_MouseUp() Handles Me.MouseLeftButtonUp | ||
If Not IsMouseDown Then Exit Sub | ||
Log("[Control] 按下带图标按钮:" & Text) | ||
IsMouseDown = False | ||
RaiseEvent Click(Me, New RouteEventArgs(True)) | ||
ModEvent.TryStartEvent(EventType, EventData) | ||
RefreshColor() | ||
End Sub | ||
Private Sub MyIconTextButton_MouseDown() Handles Me.MouseLeftButtonDown | ||
IsMouseDown = True | ||
RefreshColor() | ||
End Sub | ||
Public Property EventType As String | ||
Get | ||
Return GetValue(EventTypeProperty) | ||
End Get | ||
Set(value As String) | ||
SetValue(EventTypeProperty, value) | ||
End Set | ||
End Property | ||
Public Shared ReadOnly EventTypeProperty As DependencyProperty = DependencyProperty.Register("EventType", GetType(String), GetType(MyIconTextButton), New PropertyMetadata(Nothing)) | ||
Public Property EventData As String | ||
Get | ||
Return GetValue(EventDataProperty) | ||
End Get | ||
Set(value As String) | ||
SetValue(EventDataProperty, value) | ||
End Set | ||
End Property | ||
Public Shared ReadOnly EventDataProperty As DependencyProperty = DependencyProperty.Register("EventData", GetType(String), GetType(MyIconTextButton), New PropertyMetadata(Nothing)) | ||
|
||
'动画 | ||
|
||
Private Const AnimationTimeOfMouseIn As Integer = 100 '鼠标指向动画长度 | ||
Private Const AnimationTimeOfMouseOut As Integer = 150 '鼠标移出动画长度 | ||
Private Sub RefreshColor(Optional obj = Nothing, Optional e = Nothing) Handles Me.MouseEnter, Me.MouseLeave, Me.Loaded, Me.IsEnabledChanged | ||
Try | ||
If IsLoaded AndAlso AniControlEnabled = 0 AndAlso Not False.Equals(e) Then '防止默认属性变更触发动画,若强制不执行动画,则 e 为 False | ||
|
||
Select Case ColorType | ||
Case ColorState.Black | ||
If IsMouseDown Then | ||
'按下 | ||
AniStart(AaColor(Me, BackgroundProperty, "ColorBrush6", 70), "MyIconTextButton Color " & Uuid) | ||
ElseIf IsMouseOver Then | ||
'指向 | ||
AniStart({ | ||
AaColor(ShapeLogo, Shapes.Path.FillProperty, "ColorBrush3", AnimationTimeOfMouseIn), | ||
AaColor(LabText, TextBlock.ForegroundProperty, "ColorBrush3", AnimationTimeOfMouseIn) | ||
}, "MyIconTextButton Checked " & Uuid) | ||
AniStart(AaColor(Me, BackgroundProperty, "ColorBrushBg1", AnimationTimeOfMouseIn), "MyIconTextButton Color " & Uuid) | ||
ElseIf IsEnabled Then | ||
'正常 | ||
AniStart({ | ||
AaColor(ShapeLogo, Shapes.Path.FillProperty, "ColorBrush1", AnimationTimeOfMouseOut), | ||
AaColor(LabText, TextBlock.ForegroundProperty, "ColorBrush1", AnimationTimeOfMouseOut) | ||
}, "MyIconTextButton Checked " & Uuid) | ||
AniStart(AaColor(Me, BackgroundProperty, ColorSemiTransparent - Background, AnimationTimeOfMouseOut), "MyIconTextButton Color " & Uuid) | ||
Else | ||
'禁用 | ||
AniStart({ | ||
AaColor(ShapeLogo, Shapes.Path.FillProperty, "ColorBrushGray5", 100), | ||
AaColor(LabText, TextBlock.ForegroundProperty, "ColorBrushGray5", 100) | ||
}, "MyIconTextButton Checked " & Uuid) | ||
AniStart(AaColor(Me, BackgroundProperty, ColorSemiTransparent - Background, AnimationTimeOfMouseOut), "MyIconTextButton Color " & Uuid) | ||
End If | ||
Case ColorState.Highlight | ||
If IsMouseDown Then | ||
'按下 | ||
AniStart(AaColor(Me, BackgroundProperty, "ColorBrush6", 70), "MyIconTextButton Color " & Uuid) | ||
ElseIf IsMouseOver Then | ||
'指向 | ||
AniStart({ | ||
AaColor(ShapeLogo, Shapes.Path.FillProperty, "ColorBrush3", AnimationTimeOfMouseIn), | ||
AaColor(LabText, TextBlock.ForegroundProperty, "ColorBrush3", AnimationTimeOfMouseIn) | ||
}, "MyIconTextButton Checked " & Uuid) | ||
AniStart(AaColor(Me, BackgroundProperty, "ColorBrushBg1", AnimationTimeOfMouseIn), "MyIconTextButton Color " & Uuid) | ||
ElseIf IsEnabled Then | ||
'正常 | ||
AniStart({ | ||
AaColor(ShapeLogo, Shapes.Path.FillProperty, "ColorBrush3", AnimationTimeOfMouseOut), | ||
AaColor(LabText, TextBlock.ForegroundProperty, "ColorBrush3", AnimationTimeOfMouseOut) | ||
}, "MyIconTextButton Checked " & Uuid) | ||
AniStart(AaColor(Me, BackgroundProperty, ColorSemiTransparent - Background, AnimationTimeOfMouseOut), "MyIconTextButton Color " & Uuid) | ||
Else | ||
'禁用 | ||
AniStart({ | ||
AaColor(ShapeLogo, Shapes.Path.FillProperty, "ColorBrushGray5", 100), | ||
AaColor(LabText, TextBlock.ForegroundProperty, "ColorBrushGray5", 100) | ||
}, "MyIconTextButton Checked " & Uuid) | ||
AniStart(AaColor(Me, BackgroundProperty, ColorSemiTransparent - Background, AnimationTimeOfMouseOut), "MyIconTextButton Color " & Uuid) | ||
End If | ||
End Select | ||
|
||
Else | ||
|
||
'不使用动画 | ||
AniStop("MyIconTextButton Checked " & Uuid) | ||
AniStop("MyIconTextButton Color " & Uuid) | ||
Select Case ColorType | ||
Case ColorState.Black | ||
Background = ColorSemiTransparent | ||
ShapeLogo.SetResourceReference(Shapes.Path.FillProperty, If(IsEnabled, "ColorBrush1", "ColorBrushGray5")) | ||
LabText.SetResourceReference(TextBlock.ForegroundProperty, If(IsEnabled, "ColorBrush1", "ColorBrushGray5")) | ||
Case ColorState.Highlight | ||
Background = ColorSemiTransparent | ||
ShapeLogo.SetResourceReference(Shapes.Path.FillProperty, If(IsEnabled, "ColorBrush3", "ColorBrushGray5")) | ||
LabText.SetResourceReference(TextBlock.ForegroundProperty, If(IsEnabled, "ColorBrush3", "ColorBrushGray5")) | ||
End Select | ||
|
||
End If | ||
Catch ex As Exception | ||
Log(ex, "刷新按钮颜色出错") | ||
End Try | ||
End Sub | ||
|
||
End Class |
Oops, something went wrong.