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 ce527ed8..97e75628 100644
--- a/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
+++ b/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
@@ -56,8 +56,13 @@
Resources\dropper.cur
+
+
Resources\Effects\ColorComplementEffect.ps
+
+ Resources\Effects\GrayScaleEffect.ps
+
\ No newline at end of file
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 3017e107..f6d5903f 100644
--- a/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
+++ b/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
@@ -108,9 +108,14 @@
Resources\dropper.cur
+
+
Resources\Effects\ColorComplementEffect.ps
+
+ Resources\Effects\GrayScaleEffect.ps
+
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 5c685b76..8ad765a1 100644
--- a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
@@ -179,9 +179,14 @@
Resources\dropper.cur
+
+
Resources\Effects\ColorComplementEffect.ps
+
+ Resources\Effects\GrayScaleEffect.ps
+
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/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
index 4fe569a5..c1fd7462 100644
--- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
+++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
@@ -347,6 +347,9 @@
TreeViewDemoCtl.xaml
+
+ EffectsDemoCtl.xaml
+
GeometryAnimationDemoCtl.xaml
@@ -863,6 +866,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..0d469540 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
@@ -519,6 +519,15 @@ namespace HandyControlDemo.Properties.Langs {
}
}
+ ///
+ /// 查找类似 效果 的本地化字符串。
+ ///
+ public static string Effects {
+ get {
+ return ResourceManager.GetString("Effects", 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..561df37e 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
@@ -690,4 +690,7 @@
Drawer
+
+ Effects
+
\ 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..b0c64b31 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
@@ -690,4 +690,7 @@
Drawer
+
+ Effects
+
\ 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..17878747 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
@@ -690,4 +690,7 @@
Drawer
+
+ Effects
+
\ 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..ca3e4807 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
@@ -690,4 +690,7 @@
抽屉
+
+ 效果
+
\ 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/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/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
index f5f1e48d..e8fea193 100644
--- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
+++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
@@ -59,6 +59,7 @@
+
diff --git a/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs b/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs
index bae72b0d..f9871671 100644
--- a/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs
+++ b/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs
@@ -22,6 +22,7 @@ namespace HandyControl.Media.Effects
public ColorComplementEffect()
{
PixelShader = Shader;
+
UpdateShaderValue(InputProperty);
}
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/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