728x90
반응형
728x170
■ AcrylicBrush 엘리먼트를 사용해 커스텀 배경 아크릴 브러시를 만드는 방법을 보여준다.
▶ MainPage.xaml
<Page x:Class="TestProject.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:media="using:Microsoft.UI.Xaml.Media"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
FontFamily="나눔고딕코딩"
FontSize="16">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<media:AcrylicBrush x:Key="CustomAcrylicBrushKey"
BackgroundSource="HostBackdrop"
TintOpacity="0.8"
TintColor="Black"
FallbackColor="Green" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
<DataTemplate x:Key="ColorDataTemplateKey" x:DataType="SolidColorBrush">
<StackPanel Orientation="Horizontal">
<Rectangle
Height="20"
Width="20"
Fill="{x:Bind}" />
<TextBlock
Margin="5 0 0 0"
Text="{x:Bind Color}" />
</StackPanel>
</DataTemplate>
</ResourceDictionary>
</Page.Resources>
<Grid>
<Grid
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="50" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="400"
Height="400">
<Grid>
<Rectangle
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="200"
Height="200"
Fill="Aqua" />
<Ellipse
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="200"
Height="200"
Fill="Magenta" />
<Rectangle
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Width="200"
Height="200"
Fill="Yellow" />
</Grid>
<Rectangle Name="rectangle"
Margin="20"
Fill="{ThemeResource CustomAcrylicBrushKey}" />
</Grid>
<StackPanel Grid.Column="2"
VerticalAlignment="Center"
Spacing="10">
<TextBlock Text="색조 불투명도 :" />
<Slider Name="tintOpacitySlider"
Width="200"
Minimum="0"
Maximum="1"
SmallChange="0.001"
StepFrequency="0.001"
IsFocusEngagementEnabled="False"
ValueChanged="tintOpacitySlider_ValueChanged" />
<TextBlock Text="색조 색상 :" />
<ComboBox Name="tintColorComboBox"
ItemTemplate="{StaticResource ColorDataTemplateKey}"
SelectionChanged="tintColorComboBox_SelectionChanged">
<SolidColorBrush Color="Black" />
<SolidColorBrush Color="Red" />
<SolidColorBrush Color="Blue" />
</ComboBox>
<TextBlock Text="폴백 색상 :" />
<ComboBox Name="fallbackColorComboBox"
ItemTemplate="{StaticResource ColorDataTemplateKey}"
SelectionChanged="fallbackColorComboBox_SelectionChanged">
<SolidColorBrush Color="Green" />
<SolidColorBrush Color="Yellow" />
</ComboBox>
</StackPanel>
</Grid>
</Grid>
</Page>
▶ MainPage.xaml.cs
using System.Linq;
using Windows.Foundation;
using Windows.Graphics.Display;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Media;
namespace TestProject
{
/// <summary>
/// 메인 페이지
/// </summary>
public sealed partial class MainPage : Page
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainPage()
/// <summary>
/// 생성자
/// </summary>
public MainPage()
{
InitializeComponent();
#region 윈도우 크기를 설정한다.
double width = 800d;
double height = 600d;
double dpi = (double)DisplayInformation.GetForCurrentView().LogicalDpi;
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
Size windowSize = new Size(width * 96d / dpi, height * 96d / dpi);
ApplicationView.PreferredLaunchViewSize = windowSize;
Window.Current.Activate();
ApplicationView.GetForCurrentView().TryResizeView(windowSize);
#endregion
#region 윈도우 제목을 설정한다.
ApplicationView.GetForCurrentView().Title = "AcrylicBrush 엘리먼트 : 커스텀 배경 아크릴 브러시 사용하기";
#endregion
Loaded += Page_Loaded;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 페이지 로드시 처리하기 - Page_Loaded(sender, e)
/// <summary>
/// 페이지 로드시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void Page_Loaded(object sender, RoutedEventArgs e)
{
this.tintOpacitySlider.Value = 0.8;
this.tintColorComboBox.SelectedIndex = 0;
this.fallbackColorComboBox.SelectedIndex = 0;
}
#endregion
#region 색조 불투명도 슬라이더 값 변경시 처리하기 - tintOpacitySlider_ValueChanged(sender, e)
/// <summary>
/// 색조 불투명도 슬라이더 값 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void tintOpacitySlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
Microsoft.UI.Xaml.Media.AcrylicBrush brush = this.rectangle.Fill as Microsoft.UI.Xaml.Media.AcrylicBrush;
brush.TintOpacity = e.NewValue;
}
#endregion
#region 색조 색상 콤보 박스 선택 변경시 처리하기 - tintColorComboBox_SelectionChanged(sender, e)
/// <summary>
/// 색조 색상 콤보 박스 선택 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void tintColorComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Microsoft.UI.Xaml.Media.AcrylicBrush brush = this.rectangle.Fill as Microsoft.UI.Xaml.Media.AcrylicBrush;
brush.TintColor = ((SolidColorBrush)e.AddedItems.First()).Color;
}
#endregion
#region 폴백 색상 콤보 박스 선택 변경시 처리하기 - fallbackColorComboBox_SelectionChanged(sender, e)
/// <summary>
/// 폴백 색상 콤보 박스 선택 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void fallbackColorComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Microsoft.UI.Xaml.Media.AcrylicBrush brush = this.rectangle.Fill as Microsoft.UI.Xaml.Media.AcrylicBrush;
brush.FallbackColor = ((SolidColorBrush)e.AddedItems.First()).Color;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > UWP' 카테고리의 다른 글
[C#/UWP] Application 클래스 : FocusVisualKind 속성을 사용해 포커스 사각형 모양 변경하기 (0) | 2021.07.17 |
---|---|
[C#/UWP] Grid 엘리먼트 : BorderBrush 속성에서 SystemControlBackgroundListMediumRevealBorderBrush 리소스 사용하기 (0) | 2021.07.17 |
[C#/UWP] AppBarButton 엘리먼트 : Style 속성에서 AppBarButtonRevealStyle 리소스 사용하기 (0) | 2021.07.17 |
[C#/UWP] RadialGradientBrush 엘리먼트 사용하기 (0) | 2021.07.17 |
[C#/UWP] AcrylicBrush 엘리먼트 : 커스텀 인-앱 아크릴 브러시에서 밝기 사용하기 (0) | 2021.07.17 |
[C#/UWP] AcrylicBrush 엘리먼트 : 커스텀 인-앱 아크릴 브러시 사용하기 (0) | 2021.07.17 |
[C#/UWP] AcrylicBrush 엘리먼트 : 디폴트 배경 아크릴 브러시 사용하기 (0) | 2021.07.17 |
[C#/UWP] AcrylicBrush 엘리먼트 : 디폴트 인-앱 아크릴 브러시 사용하기 (0) | 2021.07.17 |
[C#/UWP] ToolTip 엘리먼트 : Placement/PlacementRect 속성 사용하기 (0) | 2021.07.17 |
[C#/UWP] ToolTip 엘리먼트 : HorizontalOffset/VerticalOffset 속성 사용하기 (0) | 2021.07.17 |
댓글을 달아 주세요