From b504e8b9e6651f46e0aa20038714981a1d2a745f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Divi=C5=A1?= Date: Thu, 15 Sep 2022 12:52:45 +0200 Subject: [PATCH 1/2] added more overrides for ColorBlender's Combine method, updated readme and sample --- README.md | 36 ++++++++- assets/sample_screenshot.png | Bin 29694 -> 37753 bytes sample/SampleApp/ColorBlendingExample.cs | 4 +- sample/SampleApp/MainViewModel.cs | 68 ++++++++++++++-- sample/SampleApp/MainWindow.xaml | 98 +++++++++++++---------- src/DarkColors/ColorBlender.cs | 41 ++++++++++ src/DarkColors/ColorExtensions.cs | 15 ++++ 7 files changed, 208 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index ba604d4..6a10567 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,8 @@ Blend multiple colors together with transparency support. var baseColor = Color.FromArgb(0, 0, 0); //The base color. This one can't be transparent. If it is, the alpha channel will be ignored. var colorToAdd = Color.FromArgb(125, 55, 13); //A color to add. This one can have transparency. -var colorToAddLayer = new ColorLayer(colorToAdd, 100); -var twoColorsCombined = ColorBlender.Combine(baseColor, colorToAddLayer); +var twoColorsCombined = ColorBlender.Combine(baseColor, colorToAdd); ``` ### Advanced @@ -44,3 +43,36 @@ var anotherColorToAddLayer = new ColorLayer(anotherColorToAdd, 25); var threeColorsCombined = ColorBlender.Combine(baseColor, colorToAddLayer, anotherColorToAddLayer); ``` + +### Transparency + +Using the `Color`'s alpha channel: +```csharp +var baseColor = Color.FromArgb(0, 0, 0); +var colorToAdd = Color.FromArgb(127, 125, 55, 13); //set 50% transparency using the color Alpha channel +var twoColorsCombined = ColorBlender.Combine(baseColor, colorToAdd); +``` + +Using the `ColorLayer`'s `AmountPercentage` property: +```csharp +var baseColor = Color.FromArgb(0, 0, 0); +var colorToAdd = Color.FromArgb(125, 55, 13); +var colorToAddLayer = new ColorLayer(colorToAdd, 50); //set 50% transparency using the color AmountPercentage property of the ColorLayer +var twoColorsCombined = ColorBlender.Combine(baseColor, colorToAdd); +``` + +Using both the `Color`'s alpha channel and `ColorLayer`'s `AmountPercentage` property: +```csharp +var baseColor = Color.FromArgb(0, 0, 0); +var colorToAdd = Color.FromArgb(127, 125, 55, 13); //set 50% transparency using the color Alpha channel +var colorToAddLayer = new ColorLayer(colorToAdd, 50); //set 50% transparency using the color AmountPercentage property of the ColorLayer. The resulting color will only be added by 25% because both color's Alpha and layer's AmountPercentage were used. +var twoColorsCombined = ColorBlender.Combine(baseColor, colorToAdd); +``` + +### Color extensions + +```csharp +var baseColor = Color.FromArgb(0, 0, 0); +var colorToAdd = Color.FromArgb(125, 55, 13); +var twoColorsCombined = baseColor.Combine(colorToAdd); +``` \ No newline at end of file diff --git a/assets/sample_screenshot.png b/assets/sample_screenshot.png index cf02492cd12f73e7fb3259a12e17e49d4a8b857d..18f7a45db02f29d3d7aaabb888530c22123a17f6 100644 GIT binary patch literal 37753 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 d#PWlK$dW^wnR0LZ!I_;u-Bi+q6 - + + + - + - - + - - - - + - + + - - + - - - + - - - - - - - - - + + + + + + + + - - - + - - + + - - - - - + + + + - - - + - - - - + - + + - + - - + + diff --git a/src/DarkColors/ColorBlender.cs b/src/DarkColors/ColorBlender.cs index c41f50c..b081e70 100644 --- a/src/DarkColors/ColorBlender.cs +++ b/src/DarkColors/ColorBlender.cs @@ -7,6 +7,35 @@ namespace DarkColors; /// public static class ColorBlender { + ///

+ /// Blend a base color with one or more colors + /// + /// Base color - transparency will be ignored + /// Colors to add - supports transparency + /// Color blending result + public static Color Combine(Color nonTransparentBase, params Color[] colors) + { + var result = nonTransparentBase; + + foreach (var color in colors) + { + result = Blend(result, color, 100); + } + + return result; + } + + /// + /// Blend a base color with one or more colors + /// + /// Base color - transparency will be ignored + /// Color to add - supports transparency + /// Color blending result + public static Color Combine(Color nonTransparentBase, Color color) + { + return Blend(nonTransparentBase, color, 100); + } + /// /// Blend a base color with one or more colors /// @@ -26,6 +55,18 @@ public static Color Combine(Color nonTransparentBase, params ColorLayer[] layers return result; } + /// + /// Blend a base color with one or more colors + /// + /// Base color - transparency will be ignored + /// Layer to add - supports transparency + /// Color blending result + public static Color Combine(Color nonTransparentBase, ColorLayer layer) + { + var amount = (double)layer.AmountPercentage / 100; + return Blend(nonTransparentBase, layer.Color, amount); + } + private static Color Blend(Color source, Color added, double addedManualAmount) { var addedTransparencyAmount = (double)added.A / 255; diff --git a/src/DarkColors/ColorExtensions.cs b/src/DarkColors/ColorExtensions.cs index 5ff036e..b6bbb62 100644 --- a/src/DarkColors/ColorExtensions.cs +++ b/src/DarkColors/ColorExtensions.cs @@ -7,4 +7,19 @@ public static Color Combine(this Color color, params ColorLayer[] layers) { return ColorBlender.Combine(color, layers); } + + public static Color Combine(this Color color, ColorLayer layer) + { + return ColorBlender.Combine(color, layer); + } + + public static Color Combine(this Color color, params Color[] colors) + { + return ColorBlender.Combine(color, colors); + } + + public static Color Combine(this Color color, Color anotherColor) + { + return ColorBlender.Combine(color, anotherColor); + } } \ No newline at end of file From 00e2e8ad09cd4ba462c9a7a40f5c46412dcc4c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Divi=C5=A1?= Date: Thu, 15 Sep 2022 12:52:54 +0200 Subject: [PATCH 2/2] bumped version to 1.0.1 --- src/DarkColors/DarkColors.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DarkColors/DarkColors.csproj b/src/DarkColors/DarkColors.csproj index 16b7d72..3ff7971 100644 --- a/src/DarkColors/DarkColors.csproj +++ b/src/DarkColors/DarkColors.csproj @@ -9,7 +9,7 @@ True Divis.DarkColors - 1.0.0 + 1.0.1 michaldivis Michal Diviš Dark Colors