728x90
반응형
728x170
▶ 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">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBlock Name="textBlock"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="CooperBlack"
FontSize="2"
Text="HELLO">
<TextBlock.Foreground>
<LinearGradientBrush x:Name="textBlockForegroundBrush">
<GradientStop Offset="0.00" Color="Red" />
<GradientStop Offset="0.14" Color="Orange" />
<GradientStop Offset="0.28" Color="Yellow" />
<GradientStop Offset="0.43" Color="Green" />
<GradientStop Offset="0.57" Color="Blue" />
<GradientStop Offset="0.71" Color="Indigo" />
<GradientStop Offset="0.86" Color="Violet" />
<GradientStop Offset="1.00" Color="Red" />
<GradientStop Offset="1.14" Color="Orange" />
<GradientStop Offset="1.28" Color="Yellow" />
<GradientStop Offset="1.43" Color="Green" />
<GradientStop Offset="1.57" Color="Blue" />
<GradientStop Offset="1.71" Color="Indigo" />
<GradientStop Offset="1.86" Color="Violet" />
<GradientStop Offset="2.00" Color="Red" />
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
</Grid>
</Page>
728x90
▶ MainPage.xaml.cs
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
namespace TestProject
{
/// <summary>
/// 메인 페이지
/// </summary>
public sealed partial class MainPage : Page
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region Field
/// <summary>
/// 텍스트 블럭 실제 높이
/// </summary>
private double textBlockActualHeight;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainPage()
/// <summary>
/// 생성자
/// </summary>
public MainPage()
{
InitializeComponent();
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.textBlockActualHeight = this.textBlock.ActualHeight;
CompositionTarget.Rendering += CompositionTarget_Rendering;
}
#endregion
#region 구성 타겟 렌더링시 처리하기 - CompositionTarget_Rendering(sender, e)
/// <summary>
/// 구성 타겟 렌더링시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void CompositionTarget_Rendering(object sender, object e)
{
this.textBlock.FontSize = ActualHeight / textBlockActualHeight;
RenderingEventArgs renderingEventArgs = e as RenderingEventArgs;
double t = (0.25 * renderingEventArgs.RenderingTime.TotalSeconds) % 1;
for(int index = 0; index < this.textBlockForegroundBrush.GradientStops.Count; index++)
{
this.textBlockForegroundBrush.GradientStops[index].Offset = index / 7.0 - t;
}
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > UWP' 카테고리의 다른 글
[C#/UWP] StackPanel 클래스 사용하기 (0) | 2019.02.27 |
---|---|
[C#/UWP] StackPanel 클래스 사용하기 (0) | 2019.02.27 |
[C#/UWP] Ellipse 클래스 사용하기 (0) | 2019.02.27 |
[C#/UWP] Border 클래스 사용하기 (0) | 2019.02.27 |
[C#/UWP] Border 클래스 사용하기 (0) | 2019.02.27 |
[C#/UWP] CompositionTarget 클래스 : Rendering 정적 이벤트 사용하기 (0) | 2019.02.22 |
[C#/UWP] CompositionTarget 클래스 : Rendering 정적 이벤트 사용하기 (0) | 2019.02.22 |
[C#/UWP] CompositionTarget 클래스 : Rendering 정적 이벤트 사용하기 (0) | 2019.02.22 |
[C#/UWP] CompositionTarget 클래스 : Rendering 정적 이벤트 사용하기 (0) | 2019.02.22 |
[C#/UWP] DispatcherTimer 클래스 : Tick 이벤트 사용하기 (0) | 2019.02.22 |
[C#/UWP] Binding 태그 확장 : ElementName 속성을 사용해 엘리먼트 바인딩 하기 (0) | 2019.02.08 |
댓글을 달아 주세요