-
Notifications
You must be signed in to change notification settings - Fork 21
Home
Welcome to the BlurryControls wiki!
The BlurryControls library is meant to give your application a blurry look as it is known from the AeroGlass design. Please consider that this library runs on Windows 10 only!
Get it on NuGet! PM> Install-Package BlurryControls
- BlurryWindow: you can inherit from BlurryWindow to create a blurry window
- BlurryTray: you can inherit from BlurryTray to create a control which appears (by default) in the bottom right corner of your workspace, it is a convinient way to implement a control invoked by a tray icon (comes with an animation)
- BlurryDialogWindow: this one can only be in invoked by BlurryMessageBox which provides functionality similar to the conventional MessageBox provided by Microsoft
- BlurryImage: a conventional WPF Image with additional functionality to blur it dynamically
- a small preset of style suggestions
The solution provides a small impression of what you can do with this library.
inherits from System.Windows.Window
- resize when TaskBar is not oriented at the bottom of the screen with a multi-monitor setup (works great on primary monitor, or aero snap though)
C#:
var blurryWindow = new BlurryWindow();
blurryWindow.Show();
//alternatively blurryWindow.ShowDialog() to block calling instance
Note: The usual method to invoke is StartupUri="BlurryExampleWindow.xaml"
in your App.xaml.cs
XAML:
<windows:BlurryWindow x:Class="SuperCoolExampleNamespace.BlurryExampleWindow"
xmlns:windows="clr-namespace:BlurryControls.Windows;assembly=BlurryControls"
xmlns:control="clr-namespace:SuperCoolExampleNamespace"
Strength="0.75">
<Grid x:Name="SuperCoolExampleContent">
<!-- content goes here -->
</Grid>
</windows.BlurryWindow>
Note: When applying a custom brush to the Background property, the Strength will be applied to it. The default value of Strength is 0.75
XAML:
<windows:BlurryWindow.AdditionalMenuBarButtons>
<internals:ButtonCollection>
<Button x:Name="ExampleButton1"
Click="ExampleButton_OnClick">
<Button.Content>
<Image Source="../Resources/ExampleImage.jpeg"/>
</Button.Content>
</Button>
<Button x:Name="ExampleButton2"
Click="ExampleButton_OnClick"
Foreground="White"
Content="ClickMe"/>
</internals:ButtonCollection>
</windows:BlurryWindow.AdditionalMenuBarButtons>
Note: a style fitting the existing buttons will be applied automagically
C#:
private void Test_OnClick(object sender, RoutedEventArgs e)
{
BlurryMessageBox.Show("Hello there!");
}
- IsResizable
- IsMenuBarVisible
- Strength
- CloseOnIconDoubleClick
- AdditionalMenuBarButtons
- HorizontalTitleAlignment
C#:
var tray = new InvokedTrayWindow();
tray.Show();
Note: You can also use tray.ShowDialog
to block interaction with the calling instance as long as the BlurryControl is activated
XAML:
<windows:BlurryTray x:Class="SuperCoolExampleNamespace.BlurryExampleTray"
xmlns:windows="clr-namespace:BlurryControls.Windows;assembly=BlurryControls"
xmlns:control="clr-namespace:SuperCoolExampleNamespace"
Strength="0.75"
Duration="5"
DeactivationDuration="500">
<Grid x:Name="SuperCoolExampleContent">
<!-- content goes here -->
</Grid>
</windows.BlurryTray>
- Strength
- DeactivatesOnLostFocus
- Duration
- ActivationDuration
- DeactivationDuration
(is private and can only be invoked by the static class BlurryMessageBox)
C#:
var mainWindow = Application.Current.MainWindow;
var messageHeaderText = "ExampleDialog";
var messageContentText = $"This is a dialog owned by {mainWindow.Title}";
var result = BlurryMessageBox.Show(mainWindow, messageContentText,
messageHeaderText, BlurryDialogButton.OkCancel, BlurryDialogIcon.Information);
switch (result)
{
case BlurryDialogResult.Ok:
Debug.WriteLine($"The result is {BlurryDialogResult.Ok}");
break;
case BlurryDialogResult.Cancel:
Debug.WriteLine($"The result is {BlurryDialogResult.Cancel}");
break;
case BlurryDialogResult.None:
Debug.WriteLine($"The result is {BlurryDialogResult.None}");
break;
default:
throw new ArgumentOutOfRangeException();
}
Show(string messageBoxText, double strength = 0.5);
Show(string messageBoxText, string caption, double strength = 0.5);
Show(Window owner, string messageBoxText, double strength = 0.5);
Show(string messageBoxText, string caption, BlurryDialogButton button, double strength = 0.5);
Show(Window owner, string messageBoxText, string caption, double strength = 0.5);
Show(string messageBoxText, string caption, BlurryDialogButton button, BlurryDialogIcon icon, double strength = 0.5);
Show(Window owner, string messageBoxText, string caption, BlurryDialogButton button, double strength = 0.5);
Show(Window owner, string messageBoxText, string caption, BlurryDialogButton button, BlurryDialogIcon icon, double strength = 0.5);
inherits System.Windows.Controls.Image
XAML:
<windows:BlurryImage x:Name="BlurryExampleImage"
Source="../Resources/ExampleImage.jpeg"
BlurRadius="50"/>
Note: The BlurRadius property is bindable and can be adjusted dynamically.
- BlurRadius
Note: For global style overrides you can add the following line to your local resources. It provides a small preset of style suggestions, as it can be seen in the sample application.
XAML:
<Application.Resources>
<ResourceDictionary Source="pack://application:,,,/BlurryControls;component/Themes/Generic.xaml" />
</Application.Resources>
Example of binding a strongly highlighted TextBlock content:
<TextBlock Text="Exampletext"
Foreground="{Binding Path=.Background, RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type windows:BlurryWindow}},
Converter={StaticResource InvertColorConverter}, ConverterParameter=1d}" />
Note: You may probably just make use of the static presets provided by the ColorHelper class which provides all crucial transformations, e.g. SystemWindowGlassColorBrush or InvertedTransparentSystemWindowGlassColorBrush.