diff --git a/README.md b/README.md
index 62aca62e..8b8986d6 100644
--- a/README.md
+++ b/README.md
@@ -91,6 +91,10 @@ Step 4:enjoy coding
## Latest examples
+### Effects
+
+
+
### RelativePanel

@@ -107,12 +111,12 @@ Step 4:enjoy coding

+## History publication
+
### GeometryAnimation

-## History publication
-
### SplitButton

diff --git a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj
index bd93971a..b343a399 100644
--- a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj
+++ b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj
@@ -451,6 +451,9 @@
Resources\Img\LeftMainContent\TransformRelative_16x.png
+
+ Resources\Img\LeftMainContent\Effects_16x.png
+
diff --git a/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj b/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
index 07314a19..97e75628 100644
--- a/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
+++ b/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
@@ -57,4 +57,12 @@
Resources\dropper.cur
+
+
+ Resources\Effects\ColorComplementEffect.ps
+
+
+ Resources\Effects\GrayScaleEffect.ps
+
+
\ No newline at end of file
diff --git a/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml b/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml
index 7cd8f6c3..8050e2b6 100644
--- a/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml
+++ b/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml
@@ -3,6 +3,7 @@
xmlns:controls="clr-namespace:HandyControl.Controls">
+
@@ -47,7 +48,7 @@
-
+
diff --git a/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml b/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml
index 0381d657..f0e986a1 100644
--- a/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml
+++ b/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml
@@ -297,13 +297,7 @@
-
-
-
-
-
-
-
+
diff --git a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
index 65e72972..dad16ae2 100644
--- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
+++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
@@ -430,6 +430,9 @@
TextTemplatingFileGenerator
MessageToken.cs
+
+ Resources\Img\LeftMainContent\Effects_16x.png
+
Resources\Img\LeftMainContent\TransformRelative_16x.png
diff --git a/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj b/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
index 28017834..f6d5903f 100644
--- a/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
+++ b/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
@@ -109,6 +109,14 @@
Resources\dropper.cur
+
+
+ Resources\Effects\ColorComplementEffect.ps
+
+
+ Resources\Effects\GrayScaleEffect.ps
+
+
\ No newline at end of file
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml
index 9351e44f..af4a3db6 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml
@@ -3,6 +3,7 @@
xmlns:controls="clr-namespace:HandyControl.Controls">
+
@@ -47,7 +48,7 @@
-
+
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml
index a93c8b55..8137cf91 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml
@@ -298,13 +298,7 @@
-
-
-
-
-
-
-
+
diff --git a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
index 8a6b97f4..3577548d 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -496,6 +496,9 @@
TextTemplatingFileGenerator
MessageToken.cs
+
+ Resources\Img\LeftMainContent\Effects_16x.png
+
Resources\Img\LeftMainContent\TransformRelative_16x.png
diff --git a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
index 49bc677b..8ad765a1 100644
--- a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
@@ -180,6 +180,14 @@
Resources\dropper.cur
+
+
+ Resources\Effects\ColorComplementEffect.ps
+
+
+ Resources\Effects\GrayScaleEffect.ps
+
+
\ No newline at end of file
diff --git a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml
index 7cd8f6c3..8050e2b6 100644
--- a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml
+++ b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml
@@ -3,6 +3,7 @@
xmlns:controls="clr-namespace:HandyControl.Controls">
+
@@ -47,7 +48,7 @@
-
+
diff --git a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml
index 41eecff7..93dade9b 100644
--- a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml
+++ b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml
@@ -297,13 +297,7 @@
-
-
-
-
-
-
-
+
diff --git a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
index 92439c37..18f69028 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
+++ b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
@@ -101,7 +101,8 @@
"title": "Tools",
"demoItemList": [
[ "HatchBrushGenerator", "HatchBrushGeneratorDemoCtl", "DataGenerator_16x", "" ],
- [ "Morphing Animation", "GeometryAnimationDemoCtl", "Animation_16x", "1" ]
+ [ "Morphing Animation", "GeometryAnimationDemoCtl", "Animation_16x", "" ],
+ [ "Effects", "EffectsDemoCtl", "Effects_16x", "1" ]
]
}
]
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs
index 31a98a9a..5c4cab57 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs
+++ b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs
@@ -220,6 +220,8 @@
public static readonly string BlogsView = nameof(BlogsView);
+ public static readonly string WebsitesView = nameof(WebsitesView);
+
public static readonly string NotifyIconDemo = nameof(NotifyIconDemo);
public static readonly string NotifyIconContextDemo = nameof(NotifyIconContextDemo);
diff --git a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt
index 10c881f8..75d66f65 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt
+++ b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt
@@ -120,6 +120,7 @@ var messageList = new List
"OverView",
"ProjectsView",
"BlogsView",
+ "WebsitesView",
"NotifyIconDemo",
"NotifyIconContextDemo"
};
diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
index 4fe569a5..57b7c22a 100644
--- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
+++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
@@ -266,6 +266,9 @@
UnderConstruction.xaml
+
+ WebsitesView.xaml
+
BorderDemoCtl.xaml
@@ -347,6 +350,9 @@
TreeViewDemoCtl.xaml
+
+ EffectsDemoCtl.xaml
+
GeometryAnimationDemoCtl.xaml
@@ -755,6 +761,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
@@ -863,6 +873,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
index 0aa76e77..14c08812 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
@@ -474,6 +474,15 @@ namespace HandyControlDemo.Properties.Langs {
}
}
+ ///
+ /// 查找类似 示例 的本地化字符串。
+ ///
+ public static string Demo {
+ get {
+ return ResourceManager.GetString("Demo", resourceCulture);
+ }
+ }
+
///
/// 查找类似 对话框 的本地化字符串。
///
@@ -501,6 +510,33 @@ namespace HandyControlDemo.Properties.Langs {
}
}
+ ///
+ /// 查找类似 中文文档 的本地化字符串。
+ ///
+ public static string Doc_cn {
+ get {
+ return ResourceManager.GetString("Doc_cn", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 英文文档 的本地化字符串。
+ ///
+ public static string Doc_en {
+ get {
+ return ResourceManager.GetString("Doc_en", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 文献资料 的本地化字符串。
+ ///
+ public static string Documentation {
+ get {
+ return ResourceManager.GetString("Documentation", resourceCulture);
+ }
+ }
+
///
/// 查找类似 在这里拖拽 的本地化字符串。
///
@@ -519,6 +555,15 @@ namespace HandyControlDemo.Properties.Langs {
}
}
+ ///
+ /// 查找类似 效果 的本地化字符串。
+ ///
+ public static string Effects {
+ get {
+ return ResourceManager.GetString("Effects", resourceCulture);
+ }
+ }
+
///
/// 查找类似 邮箱 的本地化字符串。
///
@@ -1752,6 +1797,15 @@ namespace HandyControlDemo.Properties.Langs {
}
}
+ ///
+ /// 查找类似 VS 插件 的本地化字符串。
+ ///
+ public static string Vsix {
+ get {
+ return ResourceManager.GetString("Vsix", resourceCulture);
+ }
+ }
+
///
/// 查找类似 警告 的本地化字符串。
///
@@ -1770,6 +1824,15 @@ namespace HandyControlDemo.Properties.Langs {
}
}
+ ///
+ /// 查找类似 网站 的本地化字符串。
+ ///
+ public static string Website {
+ get {
+ return ResourceManager.GetString("Website", resourceCulture);
+ }
+ }
+
///
/// 查找类似 窗口 的本地化字符串。
///
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
index 95647270..c0ee1efa 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
@@ -690,4 +690,25 @@
Drawer
+
+ Documentation
+
+
+ Effects
+
+
+ Website
+
+
+ Vsix
+
+
+ English document
+
+
+ Chinese document
+
+
+ Demo
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
index f7c92746..4ea3c493 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
@@ -690,4 +690,25 @@
Drawer
+
+ مستندات
+
+
+ Effects
+
+
+ Website
+
+
+ Vsix
+
+
+ English document
+
+
+ Chinese document
+
+
+ Demo
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
index cd855df0..dcc76a17 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
@@ -690,4 +690,25 @@
Drawer
+
+ Documentation
+
+
+ Effects
+
+
+ Website
+
+
+ Vsix
+
+
+ English document
+
+
+ Chinese document
+
+
+ Demo
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
index 813ca2e5..5f43be5f 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
@@ -690,4 +690,25 @@
抽屉
+
+ 文献资料
+
+
+ 效果
+
+
+ 网站
+
+
+ VS 插件
+
+
+ 英文文档
+
+
+ 中文文档
+
+
+ 示例
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/Effects_16x.png b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/Effects_16x.png
new file mode 100644
index 00000000..67d9e614
Binary files /dev/null and b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/Effects_16x.png differ
diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml
index 8fb15afa..59291a58 100644
--- a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml
+++ b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml
@@ -46,7 +46,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
@@ -70,7 +70,7 @@
-
+
@@ -79,7 +79,31 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Geometries.xaml b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Geometries.xaml
index ca18bb48..a894a9c6 100644
--- a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Geometries.xaml
+++ b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Geometries.xaml
@@ -9,6 +9,7 @@
M449.722947 199.412211H706.021053c130.967579 0 237.136842 106.169263 237.136842 237.136842v256.298105c0 130.967579-106.169263 237.136842-237.136842 237.136842H449.722947c-130.965895 0-237.136842-106.169263-237.136842-237.136842V436.549053c0-130.967579 106.170947-237.136842 237.136842-237.136842z m-201.205894-21.557895c0-64.299789-70.085053-104.704-125.850948-72.55579s-55.764211 112.96 0 145.111579 125.850947-8.257684 125.850948-72.555789z m239.528421 234.74021c0-68.003368-74.088421-110.736842-133.037474-76.734315s-58.950737 119.467789 0 153.470315 133.039158-8.730947 133.039158-76.736zM835.368421 692.847158c0-117.596632-128.154947-191.494737-230.123789-132.695579s-101.970526 206.593684 0 265.391158S835.368421 810.443789 835.368421 692.847158z
M430.079734 481.464543c45.196365 45.596478 118.486578 45.596478 163.68499 0l360.684736-324.939627c0.547469 3.751441 1.13894 7.490601 1.13894 11.401678l0 404.753417 0 116.754121c0 42.995233-34.547841 77.838809-77.145008 77.838809L145.397996 767.272941c-42.597167 0-77.145008-34.844599-77.145008-77.838809L68.252988 494.839155 68.252988 167.926594c0-3.911076 0.593518-7.65126 1.139963-11.401678L430.079734 481.464543zM910.960992 74.226538 562.044278 387.28558c-38.470173 38.811957-62.276369 38.811957-100.770078 0L112.538611 74.408687c10.011005-4.789073 21.069875-7.673773 32.859385-7.673773l733.044372 0C890.095779 66.735937 901.065622 69.539796 910.960992 74.226538z
M260.8 645H160V0h100.8v645zM461.8 152.2h-100.8V1024h100.8V152.2z m201.2 0h-100.8V1024h100.8V152.2zM864 152h-100.8v494H864V152z
+ M698.026667 597.333333C701.44 569.173333 704 541.013333 704 512 704 482.986667 701.44 454.826667 698.026667 426.666667L842.24 426.666667C849.066667 453.973333 853.333333 482.56 853.333333 512 853.333333 541.44 849.066667 570.026667 842.24 597.333333M622.506667 834.56C648.106667 787.2 667.733333 736 681.386667 682.666667L807.253333 682.666667C766.293333 753.066667 701.013333 807.68 622.506667 834.56M611.84 597.333333 412.16 597.333333C407.893333 569.173333 405.333333 541.013333 405.333333 512 405.333333 482.986667 407.893333 454.4 412.16 426.666667L611.84 426.666667C615.68 454.4 618.666667 482.986667 618.666667 512 618.666667 541.013333 615.68 569.173333 611.84 597.333333M512 851.626667C476.586667 800.426667 448 743.68 430.506667 682.666667L593.493333 682.666667C576 743.68 547.413333 800.426667 512 851.626667M341.333333 341.333333 216.746667 341.333333C257.28 270.506667 322.986667 215.893333 401.066667 189.44 375.466667 236.8 356.266667 288 341.333333 341.333333M216.746667 682.666667 341.333333 682.666667C356.266667 736 375.466667 787.2 401.066667 834.56 322.986667 807.68 257.28 753.066667 216.746667 682.666667M181.76 597.333333C174.933333 570.026667 170.666667 541.44 170.666667 512 170.666667 482.56 174.933333 453.973333 181.76 426.666667L325.973333 426.666667C322.56 454.826667 320 482.986667 320 512 320 541.013333 322.56 569.173333 325.973333 597.333333M512 171.946667C547.413333 223.146667 576 280.32 593.493333 341.333333L430.506667 341.333333C448 280.32 476.586667 223.146667 512 171.946667M807.253333 341.333333 681.386667 341.333333C667.733333 288 648.106667 236.8 622.506667 189.44 701.013333 216.32 766.293333 270.506667 807.253333 341.333333M512 85.333333C276.053333 85.333333 85.333333 277.333333 85.333333 512 85.333333 747.52 276.48 938.666667 512 938.666667 747.52 938.666667 938.666667 747.52 938.666667 512 938.666667 276.48 747.52 85.333333 512 85.333333Z
m 41.416254,90 c -0.327378,-7.4702 0.20833,-32.7284 0,-39.901 -5.386902,-0.2083 -4.521603,0.3274 -9.848987,0 0.20833,-5.50595 0.36436,-7.66666 0.126269,-13.32142 4.646472,0.0181 3.439989,-0.009 9.848987,-0.1894 0.09586,-3.7736 0.133082,-3.0791 0.126269,-7.38674 0.18259,-3.73943 -0.486609,-10.54308 4.293149,-14.96288 4.779758,-4.4198 13.606811,-3.64808 22.223356,-3.53554 -0.04417,5.73754 -0.03936,9.37986 0,12.87945 -5.049924,0.46388 -7.309188,-0.33689 -10.85914,1.26269 -1.403378,3.17794 -1.569601,4.80531 -1.262691,11.93242 3.147964,-0.13336 8.201788,-0.1378 12.626907,0 -0.995158,6.00899 -0.948285,7.62376 -1.767767,13.06882 -3.676625,0.088 -5.605721,-0.1488 -11.111678,0 -0.148814,6.756 0.357147,33.0107 0,40.1536 -6.428576,0.1786 -8.174438,-0.03 -14.394674,0 z
m 10.44335,90 c 11.073313,0.3952 19.483106,-1.8358 23.901837,-7.1603 -7.9736,-1.4292 -11.832311,-4.1933 -15.078321,-11.0837 3.459698,0.8219 5.795894,0.6358 7.606781,-0.607 -7.19593,-1.719 -12.734543,-6.7971 -13.741664,-15.836 2.766355,1.55307 5.466848,2.66623 7.828682,2.0203 -4.336544,-2.92911 -9.838998,-10.47636 -5.555839,-22.47589 8.400675,11.87052 23.824269,17.67568 33.840111,17.67767 -0.936406,-9.74688 5.88057,-19.46521 15.302849,-19.97853 8.13118,-0.50719 10.57457,4.01944 12.476346,4.82624 3.644547,0.13419 7.393301,-1.74401 10.354063,-3.53553 -1.380842,4.47157 -5.06769,5.62903 -6.313453,8.58629 5.42317,0.41513 5.891376,-1.53111 8.333758,-2.0203 -2.071414,3.75017 -5.393863,5.00034 -7.323606,8.08122 -1.633654,16.12573 -5.16049,27.57123 -14.647212,36.36553 -13.825764,11.3764 -34.755458,17.369 -56.984332,5.14 z
M68.191078 915.462005l161.384597 0L229.575676 431.30719 68.191078 431.30719 68.191078 915.462005zM955.808922 471.653083c0-44.582381-36.109406-80.69281-80.69281-80.69281L620.329241 390.960273 658.859789 206.578915c0.807389-4.034896 1.412163-8.271384 1.412163-12.709463 0-16.743336-6.859221-31.873941-17.752316-42.767036l-42.968627-42.565445L333.871043 374.216937c-14.524808 14.7264-23.602557 34.899858-23.602557 57.090253l0 403.462005c0 44.582381 36.109406 80.69281 80.69281 80.69281l363.116111 0c33.487695 0 62.133106-20.37505 74.236771-49.222051l121.643478-284.441261c3.63069-9.279341 5.850242-19.164478 5.850242-29.452799L955.807898 475.083206l-0.403183-0.403183L955.808922 471.653083z
@@ -22,5 +23,9 @@
M936.194300839506 691.6934192494618c-5.891587367822223-94.26540047423211-70.69904970840491-170.8560375504593-106.04857520987652-212.09715041975304 5.891587367822223-11.783174735644446 17.674762103466666-79.53643140740742-29.457938133649378-126.66913164452346V349.981342854005c0-182.63921228610366-129.61492468116543-315.1999312984493-294.57937486380246-315.1999312984493s-294.57937615834066 132.5607190123457-294.57937615834066 315.1999312984493v2.9457943311802466c-47.132700237116055 47.132700237116055-35.349525501471604 114.885956908879-29.45793683911111 126.66913164452346-35.349525501471604 41.24111286929382-100.15698784205432 117.83174994552098-106.04857520987652 212.09715041975304 0 23.56634947128889 2.9457943311802466 58.91587497276049 14.728969066824689 76.59063707622718 14.728969066824689 20.62055643464691 55.97008193611851-2.9457943311802466 82.48222444404936-64.80746234058272 8.837381699002469 29.457938133649378 26.51214380246913 73.64484403958517 67.75325667176295 126.66913164452346-70.69904970840491 14.728969066824689-88.37381310640988 85.42801877522965-64.80746234058272 123.72333731334321 17.674762103466666 26.51214380246913 53.02428760493826 47.132700237116055 120.77754298216297 47.132700237116055 114.885956908879 0 167.9102445138173-32.40373117029136 191.4765952796444-53.02428760493826 5.891587367822223-5.891587367822223 11.783174735644446-5.891587367822223 20.620555140108642-5.891587367822223 8.837381699002469 0 14.728969066824689 2.9457943311802466 20.62055643464691 5.891587367822223 23.56634947128889 20.62055643464691 73.64484403958517 53.02428760493826 191.4765939851062 53.02428760493826 64.80746234058272 0 103.10278087869627-20.62055643464691 120.77754427670124-47.132700237116055 23.56634947128889-38.29531853811359 2.9457943311802466-106.04857520987652-64.80746234058272-123.72333731334321 41.24111286929382-55.97008193611851 58.91587497276049-100.15698784205432 67.75325667176295-126.66913164452346 29.457938133649378 61.86166930394074 67.75325667176295 85.42801877522965 82.48222444404936 64.80746234058272 5.891587367822223-17.674762103466666 11.783174735644446-53.02428760493826 8.837381699002469-76.59063707622718z m0 0
M838.4 325.12 554.24 479.36C528 493.44 512 521.6 512 552.96l0 298.24c0 32 31.36 53.12 57.6 38.4l284.16-154.24c25.6-14.08 42.24-42.24 42.24-73.6L896 364.16C896 331.52 864.64 311.04 838.4 325.12zM405.76 478.72 121.6 325.12C95.36 311.04 64 331.52 64 363.52l0 299.52c0 31.36 16 59.52 42.24 73.6l284.16 153.6C416.64 904.32 448 883.2 448 851.2L448 552.32C448 520.96 432 492.8 405.76 478.72zM812.16 255.36c13.44-7.04 19.84-19.2 18.56-30.72 1.28-12.16-5.12-23.68-18.56-30.72L522.88 42.88c-12.8-7.04-28.16-10.24-43.52-10.24-15.36 0-30.72 3.2-43.52 10.24L146.56 193.28C133.12 200.32 127.36 212.48 128 224 127.36 236.16 133.12 248.32 146.56 255.36l289.28 150.4c12.8 7.04 28.16 10.24 43.52 10.24 15.36 0 30.72-3.2 43.52-10.24L812.16 255.36z
M1137.575865 0l0 795.939663-267.130435 228.060337-870.44543 0 0-1024 1137.575865 0zM795.939663 682.363798l-626.030169 0 0 113.575865 626.030169 0 0-113.575865zM966.757764 455.212067l-796.84827 0 0 113.575865 796.84827 0 0-113.575865zM966.757764 227.15173l-796.84827 0 0 114.484472 796.84827 0 0-114.484472z
+ M23.063,0L11,12L3,6L0,7v15l3,2l8-6l11.875,12L30,27V2.938L23.063,0z M3,19v-8l5,4L3,19z M23,21l-8-6l8-6V21z
+ M288.752 319.495c-12.497-12.497-32.758-12.497-45.255 0L73.619 489.372a32 32 0 0 0 0 45.254l169.878 169.879c6.249 6.248 14.438 9.372 22.627 9.372s16.379-3.124 22.627-9.372c12.497-12.497 12.497-32.759 0-45.255L141.502 512l147.25-147.25c12.497-12.497 12.497-32.758 0-45.255zM950.38 489.372L780.504 319.495c-12.498-12.497-32.759-12.497-45.255 0-12.497 12.497-12.497 32.758 0 45.255L882.499 512l-147.25 147.251c-12.496 12.496-12.496 32.758 0.001 45.255 6.248 6.248 14.438 9.372 22.627 9.372s16.379-3.124 22.628-9.373l169.877-169.878c12.496-12.497 12.496-32.758-0.002-45.255zM600.417 312.63c-16.289-6.858-35.052 0.785-41.91 17.074L415.451 669.46c-6.858 16.288 0.786 35.052 17.074 41.91a31.892 31.892 0 0 0 12.404 2.517c12.488 0 24.355-7.359 29.506-19.591L617.491 354.54c6.858-16.288-0.786-35.052-17.074-41.91z
+ M638.72 808.533333 529.493333 551.253333C485.973333 636.16 438.186667 725.333333 397.226667 808.533333 396.8 808.96 377.173333 808.533333 377.173333 808.533333 314.453333 661.333333 249.6 516.266667 186.453333 370.346667 171.946667 334.506667 120.746667 277.333333 85.333333 277.333333 85.333333 273.066667 85.333333 263.68 85.333333 258.133333L301.226667 258.133333 301.226667 277.333333C275.626667 277.333333 232.106667 294.4 243.2 322.133333 273.92 387.84 381.44 642.56 410.88 707.413333 430.933333 667.306667 487.68 561.493333 512 516.693333 492.8 479.146667 432.213333 338.346667 414.293333 303.36 400.64 280.32 366.08 277.333333 339.626667 277.333333 339.626667 270.933333 340.053333 266.666667 339.626667 258.56L529.92 258.986667 529.92 276.053333C503.893333 277.333333 479.573333 286.293333 490.666667 311.04 516.266667 363.946667 531.2 401.92 554.666667 450.986667 561.92 436.48 600.32 357.546667 618.666667 316.16 629.76 288.426667 613.12 277.333333 567.04 277.333333 567.466667 272.213333 567.466667 263.253333 567.466667 258.986667 626.773333 258.56 715.946667 258.56 731.733333 258.133333L731.733333 276.053333C701.44 277.333333 670.293333 293.546667 654.08 318.293333L576 482.133333C583.68 503.893333 659.626667 672.426667 667.733333 691.2L832 314.453333C819.2 283.733333 782.506667 277.333333 768 277.333333 768 271.786667 768 264.533333 768 258.133333L938.666667 259.413333 938.666667 260.266667 938.666667 277.333333C901.12 277.333333 877.653333 298.666667 864 330.666667 829.866667 407.04 725.333333 650.24 657.066667 808.533333 657.066667 808.533333 638.72 808.533333 638.72 808.533333Z
+ M173.826977 510.432295c0-122.019031-0.050142-244.038062 0.022513-366.057093 0.032746-54.232159 27.618011-81.962733 81.740676-82.012875 117.26475-0.10847 234.532571-0.400113 351.790158 0.567935 10.968819 0.090051 24.65554 5.861498 32.362059 13.658068 66.276473 67.050092 131.747603 134.908596 196.58633 203.352431 7.161097 7.559163 12.495592 20.287045 12.535501 30.641881 0.738827 189.363835 0.623193 378.731764 0.480954 568.098669-0.036839 49.259914-28.894074 77.959559-78.538751 78.007655-172.727946 0.166799-345.455893 0.165776-518.183839 0.002047-50.561559-0.048095-78.714759-28.893051-78.760808-80.201623C173.752276 754.470357 173.826977 632.451326 173.826977 510.432295zM425.726078 715.13242c-0.409322 52.42193 32.43983 88.344071 81.254605 88.856747 48.829102 0.512676 83.016739-35.294854 83.205027-87.148849 0.190335-52.300156-32.965809-88.35942-81.524758-88.665389C459.317127 627.863844 426.136424 662.654208 425.726078 715.13242zM265.914302 633.581056c0 56.69935 0 110.830201 0 166.16446 23.783683 0 45.88505 0.218988 67.980277-0.049119 36.362162-0.441045 61.114916-17.009396 71.76958-47.599088 13.557784-38.924521 4.252861-85.525885-22.836101-104.649432-9.880021-6.974855-22.768563-12.386098-34.668591-13.255908C321.448106 632.240525 294.495244 633.581056 265.914302 633.581056zM758.306732 689.51088c-9.967002-45.812395-41.170678-66.920132-86.082564-60.683081-42.587957 5.913687-71.66418 46.171576-67.992557 94.137007 3.773953 49.296753 35.82902 80.999802 81.923848 81.025385 42.137703 0.023536 68.915579-25.63382 71.465658-69.621661-10.092869 0-20.128433 0-30.109762 0-16.044418 36.365232-36.768415 47.330982-62.482053 33.178657-19.942191-10.975982-28.691459-39.623439-21.979594-69.791529 4.77884-21.481244 16.022928-36.523845 39.027875-38.340213 21.590737-1.704828 35.721573 9.087982 40.968064 30.095435C735.017306 689.51088 745.964636 689.51088 758.306732 689.51088zM635.406634 159.644977c0 32.664957-0.671289 69.714781 0.62524 106.695021 0.230244 6.566556 8.422833 18.209734 13.30912 18.408255 37.929868 1.542122 75.950809 0.851391 113.944122 0.851391 1.113357-2.461051 2.226714-4.92108 3.340071-7.382131C722.585159 238.422158 678.54513 198.626803 635.406634 159.644977zM553.603537 717.1381c-0.353041 34.149774-17.751293 55.144948-45.725414 55.175647-29.049616 0.031722-45.502333-21.023826-44.98454-57.571207 0.49528-34.968419 17.328667-55.873542 44.977377-55.858192C535.765263 658.899698 553.965787 682.0827 553.603537 717.1381zM298.449299 770.413468c0-37.08564 0-71.501474 0-107.650789 25.056676-1.242294 50.77236-6.163373 66.627467 18.401092 13.642718 21.135366 14.034645 45.815465 2.095731 67.677379C352.412328 775.868713 325.439 771.676228 298.449299 770.413468z
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs b/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs
index c317945b..c4389402 100644
--- a/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs
+++ b/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs
@@ -185,6 +185,19 @@ namespace HandyControlDemo.Service
};
}
+ internal List GetWebsiteDataList()
+ {
+ return new List
+ {
+ new AvatarModel
+ {
+ DisplayName = "Dotnet9",
+ AvatarUri = "https://pic.cnblogs.com/avatar/1663243/20191124121029.png",
+ Link = "https://dotnet9.com/"
+ }
+ };
+ }
+
internal ObservableCollection GetCardDataList()
{
return new ObservableCollection
diff --git a/src/Shared/HandyControlDemo_Shared/Tools/Converter/HatchBrushConverter.cs b/src/Shared/HandyControlDemo_Shared/Tools/Converter/HatchBrushConverter.cs
index 878605f7..6581b245 100644
--- a/src/Shared/HandyControlDemo_Shared/Tools/Converter/HatchBrushConverter.cs
+++ b/src/Shared/HandyControlDemo_Shared/Tools/Converter/HatchBrushConverter.cs
@@ -20,7 +20,7 @@ namespace HandyControlDemo.Tools.Converter
{
if (value is HatchStyle style)
{
- return _brushGenerator.GetHatchBrush(style, ResourceHelper.GetResource("DarkPrimaryColor"), ResourceHelper.GetResource("BackgroundColor"));
+ return _brushGenerator.GetHatchBrush(style, ResourceHelper.GetResource(ResourceToken.DarkPrimaryColor), ResourceHelper.GetResource(ResourceToken.BackgroundColor));
}
return Brushes.Transparent;
}
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PaginationDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PaginationDemoCtl.xaml
index f4695b25..84474d60 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PaginationDemoCtl.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PaginationDemoCtl.xaml
@@ -26,17 +26,17 @@
-
+
-
+
-
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/NoUserContent.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Main/NoUserContent.xaml
index 3857a4e2..df39bc42 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/NoUserContent.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/NoUserContent.xaml
@@ -23,6 +23,11 @@
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/WebsitesView.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Main/WebsitesView.xaml
new file mode 100644
index 00000000..74852972
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/WebsitesView.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/WebsitesView.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Main/WebsitesView.xaml.cs
new file mode 100644
index 00000000..e4bba9d3
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/WebsitesView.xaml.cs
@@ -0,0 +1,10 @@
+namespace HandyControlDemo.UserControl
+{
+ public partial class WebsitesView
+ {
+ public WebsitesView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Styles/DataGridDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Styles/DataGridDemoCtl.xaml
index 3e4086ea..922b076d 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Styles/DataGridDemoCtl.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Styles/DataGridDemoCtl.xaml
@@ -23,10 +23,10 @@
-
+
-
+
@@ -40,10 +40,10 @@
-
+
-
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Tools/EffectsDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Tools/EffectsDemoCtl.xaml
new file mode 100644
index 00000000..312cec54
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Tools/EffectsDemoCtl.xaml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Tools/EffectsDemoCtl.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Tools/EffectsDemoCtl.xaml.cs
new file mode 100644
index 00000000..7f56b93f
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Tools/EffectsDemoCtl.xaml.cs
@@ -0,0 +1,10 @@
+namespace HandyControlDemo.UserControl
+{
+ public partial class EffectsDemoCtl
+ {
+ public EffectsDemoCtl()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs
index 65c31f5f..7fc48de2 100644
--- a/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs
+++ b/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs
@@ -134,8 +134,9 @@ namespace HandyControlDemo.ViewModel
}
var cachePath = $"{AudioCachePath}\\{Guid.NewGuid().ToString()}";
+ var cachePathWithQuotes = $"\"{cachePath}\"";
ExternDllHelper.MciSendString("stop movie", "", 0, 0);
- ExternDllHelper.MciSendString($"save movie {cachePath}", "", 0, 0);
+ ExternDllHelper.MciSendString($"save movie {cachePathWithQuotes}", "", 0, 0);
ExternDllHelper.MciSendString("close movie", "", 0, 0);
_stopwatch.Stop();
diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/ViewModelLocator.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/ViewModelLocator.cs
index 9a65e1ea..af874736 100644
--- a/src/Shared/HandyControlDemo_Shared/ViewModel/ViewModelLocator.cs
+++ b/src/Shared/HandyControlDemo_Shared/ViewModel/ViewModelLocator.cs
@@ -25,6 +25,7 @@ namespace HandyControlDemo.ViewModel
SimpleIoc.Default.Register(() => new ItemsDisplayViewModel(dataService.GetContributorDataList), "Contributors");
SimpleIoc.Default.Register(() => new ItemsDisplayViewModel(dataService.GetBlogDataList), "Blogs");
SimpleIoc.Default.Register(() => new ItemsDisplayViewModel(dataService.GetProjectDataList), "Projects");
+ SimpleIoc.Default.Register(() => new ItemsDisplayViewModel(dataService.GetWebsiteDataList), "Websites");
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
@@ -66,6 +67,8 @@ namespace HandyControlDemo.ViewModel
public ItemsDisplayViewModel ProjectsView => ServiceLocator.Current.GetInstance("Projects");
+ public ItemsDisplayViewModel WebsitesView => ServiceLocator.Current.GetInstance("Websites");
+
public StepBarDemoViewModel StepBarDemo => ServiceLocator.Current.GetInstance();
public PaginationDemoViewModel PaginationDemo => ServiceLocator.Current.GetInstance();
diff --git a/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs b/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs
index 38ac8392..114e273b 100644
--- a/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs
@@ -39,8 +39,18 @@ namespace HandyControl.Controls
private static void OnUriChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var ctl = (GifImage) d;
- var v = (Uri)e.NewValue;
- ctl.Source = new BitmapImage(v);
+ ctl.StopAnimate();
+
+ if (e.NewValue != null)
+ {
+ var v = (Uri)e.NewValue;
+ ctl.GetGifStreamFromPack(v);
+ ctl.StartAnimate();
+ }
+ else
+ {
+ ctl.Source = null;
+ }
}
public Uri Uri
diff --git a/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs b/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
index 17daef50..06bb6454 100644
--- a/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
@@ -622,6 +622,11 @@ namespace HandyControl.Controls
if (SelectedDateTime != null)
{
+ if (SelectedDateTime != DisplayDateTime)
+ {
+ SetCurrentValue(DisplayDateTimeProperty, SelectedDateTime);
+ }
+
var selectedTime = DateTimeToString(SelectedDateTime.Value);
if (string.Compare(selectedTime, s, StringComparison.Ordinal) == 0)
diff --git a/src/Shared/HandyControl_Shared/Controls/TabControl/TabItem.cs b/src/Shared/HandyControl_Shared/Controls/TabControl/TabItem.cs
index becf01e0..2df33a1b 100644
--- a/src/Shared/HandyControl_Shared/Controls/TabControl/TabItem.cs
+++ b/src/Shared/HandyControl_Shared/Controls/TabControl/TabItem.cs
@@ -208,7 +208,7 @@ namespace HandyControl.Controls
menu.SetBinding(VisibilityProperty, new Binding(ShowContextMenuProperty.Name)
{
Source = this,
- Converter = ResourceHelper.GetResource("Boolean2VisibilityConverter")
+ Converter = ResourceHelper.GetResource(ResourceToken.Boolean2VisibilityConverter)
});
}
}
diff --git a/src/Shared/HandyControl_Shared/Data/ResourceToken.cs b/src/Shared/HandyControl_Shared/Data/ResourceToken.cs
index 4ec115bd..7fdbef09 100644
--- a/src/Shared/HandyControl_Shared/Data/ResourceToken.cs
+++ b/src/Shared/HandyControl_Shared/Data/ResourceToken.cs
@@ -2,6 +2,76 @@
{
public class ResourceToken
{
+ #region Basic
+
+ #region Geometry
+
+ public const string CalendarGeometry = nameof(CalendarGeometry);
+
+ public const string DeleteGeometry = nameof(DeleteGeometry);
+
+ public const string DeleteFillCircleGeometry = nameof(DeleteFillCircleGeometry);
+
+ public const string CloseGeometry = nameof(CloseGeometry);
+
+ public const string UpGeometry = nameof(UpGeometry);
+
+ public const string DownGeometry = nameof(DownGeometry);
+
+ public const string ClockGeometry = nameof(ClockGeometry);
+
+ public const string LeftGeometry = nameof(LeftGeometry);
+
+ public const string RightGeometry = nameof(RightGeometry);
+
+ public const string RotateLeftGeometry = nameof(RotateLeftGeometry);
+
+ public const string EnlargeGeometry = nameof(EnlargeGeometry);
+
+ public const string ReduceGeometry = nameof(ReduceGeometry);
+
+ public const string DownloadGeometry = nameof(DownloadGeometry);
+
+ public const string SaveGeometry = nameof(SaveGeometry);
+
+ public const string WindowsGeometry = nameof(WindowsGeometry);
+
+ public const string FullScreenGeometry = nameof(FullScreenGeometry);
+
+ public const string FullScreenReturnGeometry = nameof(FullScreenReturnGeometry);
+
+ public const string SearchGeometry = nameof(SearchGeometry);
+
+ public const string UpDownGeometry = nameof(UpDownGeometry);
+
+ public const string WindowMinGeometry = nameof(WindowMinGeometry);
+
+ public const string CheckedGeometry = nameof(CheckedGeometry);
+
+ public const string EyeOpenGeometry = nameof(EyeOpenGeometry);
+
+ public const string EyeCloseGeometry = nameof(EyeCloseGeometry);
+
+ public const string WindowRestoreGeometry = nameof(WindowRestoreGeometry);
+
+ public const string WindowMaxGeometry = nameof(WindowMaxGeometry);
+
+ public const string AudioGeometry = nameof(AudioGeometry);
+
+ public const string BubbleTailGeometry = nameof(BubbleTailGeometry);
+
+ public const string StarGeometry = nameof(StarGeometry);
+
+ public const string AddGeometry = nameof(AddGeometry);
+
+ public const string SubGeometry = nameof(SubGeometry);
+
+ public const string AllGeometry = nameof(AllGeometry);
+
+ public const string DragGeometry = nameof(DragGeometry);
+
+ public const string DropperGeometry = nameof(DropperGeometry);
+
public const string SuccessGeometry = nameof(SuccessGeometry);
public const string InfoGeometry = nameof(InfoGeometry);
@@ -14,22 +84,214 @@
public const string FatalGeometry = nameof(FatalGeometry);
+ #endregion
+
+ #region Brush
+
public const string PrimaryBrush = nameof(PrimaryBrush);
+ public const string DarkPrimaryBrush = nameof(DarkPrimaryBrush);
+
public const string SuccessBrush = nameof(SuccessBrush);
+ public const string DarkSuccessBrush = nameof(DarkSuccessBrush);
+
public const string InfoBrush = nameof(InfoBrush);
+ public const string DarkInfoBrush = nameof(DarkInfoBrush);
+
public const string DangerBrush = nameof(DangerBrush);
+ public const string DarkDangerBrush = nameof(DarkDangerBrush);
+
public const string WarningBrush = nameof(WarningBrush);
+ public const string DarkWarningBrush = nameof(DarkWarningBrush);
+
public const string AccentBrush = nameof(AccentBrush);
+ public const string DarkAccentBrush = nameof(DarkAccentBrush);
+
public const string PrimaryTextBrush = nameof(PrimaryTextBrush);
+ public const string SecondaryTextBrush = nameof(SecondaryTextBrush);
+
public const string ThirdlyTextBrush = nameof(ThirdlyTextBrush);
+ public const string ReverseTextBrush = nameof(ReverseTextBrush);
+
+ public const string TextIconBrush = nameof(TextIconBrush);
+
+ public const string BorderBrush = nameof(BorderBrush);
+
+ public const string SecondaryBorderBrush = nameof(SecondaryBorderBrush);
+
+ public const string BackgroundBrush = nameof(BackgroundBrush);
+
+ public const string RegionBrush = nameof(RegionBrush);
+
+ public const string SecondaryRegionBrush = nameof(SecondaryRegionBrush);
+
+ public const string ThirdlyRegionBrush = nameof(ThirdlyRegionBrush);
+
+ public const string TitleBrush = nameof(TitleBrush);
+
+ public const string DefaultBrush = nameof(DefaultBrush);
+
+ public const string DarkDefaultBrush = nameof(DarkDefaultBrush);
+
+ public const string DarkMaskBrush = nameof(DarkMaskBrush);
+
+ public const string DarkOpacityBrush = nameof(DarkOpacityBrush);
+
+ #endregion
+
+ #region Converter
+
+ public const string Boolean2BooleanReConverter = nameof(Boolean2BooleanReConverter);
+
+ public const string Boolean2VisibilityReConverter = nameof(Boolean2VisibilityReConverter);
+
+ public const string BooleanArr2VisibilityConverter = nameof(BooleanArr2VisibilityConverter);
+
+ public const string Long2FileSizeConverter = nameof(Long2FileSizeConverter);
+
+ public const string String2VisibilityConverter = nameof(String2VisibilityConverter);
+
+ public const string String2VisibilityReConverter = nameof(String2VisibilityReConverter);
+
+ public const string Boolean2VisibilityConverter = nameof(Boolean2VisibilityConverter);
+
+ public const string TreeViewItemMarginConverter = nameof(TreeViewItemMarginConverter);
+
+ public const string Color2HexStringConverter = nameof(Color2HexStringConverter);
+
+ public const string Object2BooleanConverter = nameof(Object2BooleanConverter);
+
+ public const string Boolean2StringConverter = nameof(Boolean2StringConverter);
+
+ public const string Int2StringConverter = nameof(Int2StringConverter);
+
+ public const string BorderClipConverter = nameof(BorderClipConverter);
+
+ public const string BorderCircularClipConverter = nameof(BorderCircularClipConverter);
+
+ public const string BorderCircularConverter = nameof(BorderCircularConverter);
+
+ public const string Object2VisibilityConverter = nameof(Object2VisibilityConverter);
+
+ public const string Number2PercentageConverter = nameof(Number2PercentageConverter);
+
+ public const string RectangleCircularConverter = nameof(RectangleCircularConverter);
+
+ public const string ThicknessSplitConverter = nameof(ThicknessSplitConverter);
+
+ public const string CornerRadiusSplitConverter = nameof(CornerRadiusSplitConverter);
+
+ public const string MenuScrollingVisibilityConverter = nameof(MenuScrollingVisibilityConverter);
+
+ public const string Double2GridLengthConverter = nameof(Double2GridLengthConverter);
+
+ #endregion
+
+ #region Effect
+
+ public const string EffectShadowColor = nameof(EffectShadowColor);
+
+ public const string EffectShadow1 = nameof(EffectShadow1);
+
+ public const string EffectShadow2 = nameof(EffectShadow2);
+
+ public const string EffectShadow3 = nameof(EffectShadow3);
+
+ public const string EffectShadow4 = nameof(EffectShadow4);
+
+ public const string EffectShadow5 = nameof(EffectShadow5);
+
+ #endregion
+
+ #region Color
+
+ public const string PrimaryColor = nameof(PrimaryColor);
+
+ public const string DarkPrimaryColor = nameof(DarkPrimaryColor);
+
+ public const string DangerColor = nameof(DangerColor);
+
+ public const string DarkDangerColor = nameof(DarkDangerColor);
+
+ public const string WarningColor = nameof(WarningColor);
+
+ public const string DarkWarningColor = nameof(DarkWarningColor);
+
+ public const string InfoColor = nameof(InfoColor);
+
+ public const string DarkInfoColor = nameof(DarkInfoColor);
+
+ public const string SuccessColor = nameof(SuccessColor);
+
+ public const string DarkSuccessColor = nameof(DarkSuccessColor);
+
+ public const string PrimaryTextColor = nameof(PrimaryTextColor);
+
+ public const string SecondaryTextColor = nameof(SecondaryTextColor);
+
+ public const string ThirdlyTextColor = nameof(ThirdlyTextColor);
+
+ public const string ReverseTextColor = nameof(ReverseTextColor);
+
+ public const string TextIconColor = nameof(TextIconColor);
+
+ public const string BorderColor = nameof(BorderColor);
+
+ public const string SecondaryBorderColor = nameof(SecondaryBorderColor);
+
+ public const string BackgroundColor = nameof(BackgroundColor);
+
+ public const string RegionColor = nameof(RegionColor);
+
+ public const string SecondaryRegionColor = nameof(SecondaryRegionColor);
+
+ public const string ThirdlyRegionColor = nameof(ThirdlyRegionColor);
+
+ public const string TitleColor = nameof(TitleColor);
+
+ public const string SecondaryTitleColor = nameof(SecondaryTitleColor);
+
+ public const string DefaultColor = nameof(DefaultColor);
+
+ public const string DarkDefaultColor = nameof(DarkDefaultColor);
+
+ public const string AccentColor = nameof(AccentColor);
+
+ public const string DarkAccentColor = nameof(DarkAccentColor);
+
+ public const string DarkMaskColor = nameof(DarkMaskColor);
+
+ public const string DarkOpacityColor = nameof(DarkOpacityColor);
+
+ #endregion
+
+ #region Behavior
+
+ public const string BehaviorXY200 = nameof(BehaviorXY200);
+
+ public const string BehaviorX200 = nameof(BehaviorX200);
+
+ public const string BehaviorY200 = nameof(BehaviorY200);
+
+ public const string BehaviorXY400 = nameof(BehaviorXY400);
+
+ public const string BehaviorX400 = nameof(BehaviorX400);
+
+ public const string BehaviorY400 = nameof(BehaviorY400);
+
+ #endregion
+
+ #endregion
+
+ #region Internal
+
internal const string BlurGradientValue = nameof(BlurGradientValue);
internal const string ButtonCustom = nameof(ButtonCustom);
@@ -87,7 +349,7 @@
internal const string TabItemCapsuleVerticalFirst = nameof(TabItemCapsuleVerticalFirst);
internal const string TabItemCapsuleVerticalLast = nameof(TabItemCapsuleVerticalLast);
-
- internal const string BehaviorXY400 = nameof(BehaviorXY400);
+
+ #endregion
}
}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
index b01bf9b2..cea84005 100644
--- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
+++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
@@ -58,6 +58,8 @@
+
+
@@ -907,7 +909,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs b/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs
new file mode 100644
index 00000000..f9871671
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Windows;
+using System.Windows.Media;
+using System.Windows.Media.Effects;
+
+namespace HandyControl.Media.Effects
+{
+ public class ColorComplementEffect : ShaderEffect
+ {
+ public static readonly DependencyProperty InputProperty = RegisterPixelShaderSamplerProperty("Input", typeof(ColorComplementEffect), 0);
+
+ private static readonly PixelShader Shader;
+
+ static ColorComplementEffect()
+ {
+ Shader = new PixelShader
+ {
+ UriSource = new Uri("pack://application:,,,/HandyControl;component/Resources/Effects/ColorComplementEffect.ps")
+ };
+ }
+
+ public ColorComplementEffect()
+ {
+ PixelShader = Shader;
+
+ UpdateShaderValue(InputProperty);
+ }
+
+ public Brush Input
+ {
+ get => (Brush)GetValue(InputProperty);
+ set => SetValue(InputProperty, value);
+ }
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/Media/Effects/GrayScaleEffect.cs b/src/Shared/HandyControl_Shared/Media/Effects/GrayScaleEffect.cs
new file mode 100644
index 00000000..2a972ea9
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Media/Effects/GrayScaleEffect.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Windows;
+using System.Windows.Media;
+using System.Windows.Media.Effects;
+using HandyControl.Data;
+
+namespace HandyControl.Media.Effects
+{
+ public class GrayScaleEffect : ShaderEffect
+ {
+ public static readonly DependencyProperty InputProperty = RegisterPixelShaderSamplerProperty("Input", typeof(GrayScaleEffect), 0);
+
+ private static readonly PixelShader Shader;
+
+ static GrayScaleEffect()
+ {
+ Shader = new PixelShader
+ {
+ UriSource = new Uri("pack://application:,,,/HandyControl;component/Resources/Effects/GrayScaleEffect.ps")
+ };
+ }
+
+ public GrayScaleEffect()
+ {
+ PixelShader = Shader;
+
+ UpdateShaderValue(InputProperty);
+ UpdateShaderValue(ScaleProperty);
+ }
+
+ public Brush Input
+ {
+ get => (Brush)GetValue(InputProperty);
+ set => SetValue(InputProperty, value);
+ }
+
+ public static readonly DependencyProperty ScaleProperty = DependencyProperty.Register(
+ "Scale", typeof(double), typeof(GrayScaleEffect), new PropertyMetadata(ValueBoxes.Double1Box, PixelShaderConstantCallback(0)));
+
+ public double Scale
+ {
+ get => (double) GetValue(ScaleProperty);
+ set => SetValue(ScaleProperty, value);
+ }
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs b/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs
index 65c79a43..8b80dbb4 100644
--- a/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs
+++ b/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs
@@ -22,6 +22,7 @@ using System.Runtime.InteropServices;
[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Expression.Shapes")]
[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Expression.Media")]
[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Media.Animation")]
+[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Media.Effects")]
[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Data")]
[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Properties.Langs")]
[assembly: XmlnsPrefix("https://handyorg.github.io/handycontrol", "hc")]
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.fx b/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.fx
new file mode 100644
index 00000000..1e550b99
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.fx
@@ -0,0 +1,10 @@
+float4 main(float2 uv : TEXCOORD) : COLOR
+{
+ float4 color = tex2D(implicitInput, uv);
+ float4 complement;
+
+ complement.rgb = color.a - color.rgb;
+ complement.a = color.a;
+
+ return complement;
+}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.ps b/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.ps
new file mode 100644
index 00000000..bfeb1a74
Binary files /dev/null and b/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.ps differ
diff --git a/src/Shared/HandyControl_Shared/Resources/Effects/GrayScaleEffect.fx b/src/Shared/HandyControl_Shared/Resources/Effects/GrayScaleEffect.fx
new file mode 100644
index 00000000..1e243e21
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Resources/Effects/GrayScaleEffect.fx
@@ -0,0 +1,15 @@
+sampler2D implicitInput : register(s0);
+float scale : register(c0);
+
+float4 main(float2 uv : TEXCOORD) : COLOR
+{
+ float4 color = tex2D(implicitInput, uv);
+
+ float4 complement;
+ float intensity = (color.r + color.g + color.b) / 3;
+
+ complement.rgb = color.rgb * (1 - scale) + intensity * scale;
+ complement.a = color.a;
+
+ return complement;
+}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Resources/Effects/GrayScaleEffect.ps b/src/Shared/HandyControl_Shared/Resources/Effects/GrayScaleEffect.ps
new file mode 100644
index 00000000..3b4ab0a9
Binary files /dev/null and b/src/Shared/HandyControl_Shared/Resources/Effects/GrayScaleEffect.ps differ
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ExpanderBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ExpanderBaseStyle.xaml
index 211affc8..c3dd9d83 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ExpanderBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ExpanderBaseStyle.xaml
@@ -14,7 +14,7 @@
-
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ListBoxBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ListBoxBaseStyle.xaml
index 1f6b1131..cc7ffcb3 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ListBoxBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ListBoxBaseStyle.xaml
@@ -4,6 +4,7 @@
+
@@ -11,7 +12,7 @@
-
+