リフレクションを持った時刻表示の作成
次は、右側のグリッドに時刻表示をする文字列を作成し、これにリフレクションを設定します。
2つ目のC1Reflectorコントロールの作成
ツールボックスのC1Reflectorコントロールのアイコンをダブルクリックし、2つ目のC1Reflectorコントロールを作成します。グリッドの2列目を配置場所に指定し、左揃えにします。
また、リフレクションに透明効果を設定します。透明度の設定値は、先に作成したリフレクションと同じです。
<c1ext:C1Reflector Grid.Column="1" HorizontalAlignment="Left">
    <c1ext:C1Reflector.ReflectionEffects>
        <c1ext:ReflectionOpacityEffect Coefficient="1" Offset="0.5"/>
    </c1ext:C1Reflector.ReflectionEffects>
時刻表示の作成
次に、テキストブロックを作成します。時刻表示にビハインドコードを使用するので、テキストブロックに名前を付け、線形グラデーションで塗りつぶします。また、影も付けておきます。
<TextBlock Grid.Column="1" x:Name="text1" FontSize="30">
    <TextBlock.Foreground>
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
          <GradientStop Color="Yellow" Offset="0.0" />
          <GradientStop Color="LimeGreen" Offset="1.0" />
        </LinearGradientBrush>
    </TextBlock.Foreground>
             
    <TextBlock.Effect>
        <DropShadowEffect Color="Black"></DropShadowEffect>
    </TextBlock.Effect>
</TextBlock>
タイマーによる時刻処理の作成
ビハインドコードでは、タイマーによる時刻表示処理を作成します。
まず、DispatcherTimerクラスのインスタンスを作成して、Intervalプロパティを100ミリ秒に設定し、Startメソッドを実行してタイマーをスタートさせます。
そして、新しいイベントハンドラ「Tick」を作成し、DateTime構造体のNowプロパティで現在の時刻をシステムから取得し、テキストブロックのTextプロパティに設定します。
Imports System.Windows.Threading
Partial Public Class MainPage
    Inherits UserControl
    Private WithEvents timer As New DispatcherTimer()
    Public Sub New()
        InitializeComponent()
        timer.Interval = New TimeSpan(0, 0, 0, 0, 100)
        timer.Start()
    End Sub
    Public Sub timer_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer.Tick
        text1.Text = DateTime.Now.ToString
    End Sub
End Class
using System.Windows.Threading;
namespace sl_reflection_cs
{
    public partial class MainPage : UserControl
    {
        private DispatcherTimer timer = new DispatcherTimer();
        public MainPage()
        {
            InitializeComponent();
            timer.Interval = new TimeSpan(0, 0, 0, 0, 100);
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }
        void timer_Tick(object sender, EventArgs e)
        {
            text1.Text = DateTime.Now.ToString();
        }
    }
}
ここまでに作成したリフレクションを確認します。半透明のリフレクションが時刻表示に設定され、時刻が変わると、リフレクションの文字も一緒に変わります。

リフレクションの変形効果
今度は、このテキストとリフレクションを変形させ、奥行きを付けてみます。これは、C1ReflectorコントロールのContentProjectionプロパティを使います。このプロパティに、PlaneProjectionクラスのプロパティを使い、XYZの3つの座標軸を操作して立体効果を作り出します。
使用できるプロパティと機能は、次の表のとおりです。
| プロパティ | 機能 | 
|---|---|
| RotationX | X軸の周囲でオブジェクトを回転する度数 | 
| RotationY | Y軸の周囲でオブジェクトを回転する度数 | 
| RotationZ | Z軸の周囲でオブジェクトを回転する度数 | 
| CenterOfRotationX | 回転するオブジェクトの中心のX座標 | 
| CenterOfRotationY | 回転するオブジェクトの中心のY座標 | 
| CenterOfRotationZ | 回転するオブジェクトの中心のZ座標 | 
| GlobalOffsetX | 画面のX軸方向に沿ってオブジェクトが変換される距離 | 
| GlobalOffsetY | 画面のY軸方向に沿ってオブジェクトが変換される距離 | 
| GlobalOffsetZ | 画面のZ軸方向に沿ってオブジェクトが変換される距離 | 
| LocalOffsetX | オブジェクトの面のX軸方向に沿ってオブジェクトが変換される距離 | 
| LocalOffsetY | オブジェクトの面のY軸方向に沿ってオブジェクトが変換される距離 | 
| LocalOffsetZ | オブジェクトの面のZ軸方向に沿ってオブジェクトが変換される距離 | 
今回は、「RotationX」「RotationY」「RotationZ」の3つのプロパティを使って、オブジェクトを少し回転させます。
    <c1ext:C1Reflector.ContentProjection>
        <PlaneProjection RotationX="15" RotationY="25" RotationZ="0"/>
    </c1ext:C1Reflector.ContentProjection>
</c1ext:C1Reflector>
表示すると、時刻が奥から手前に出てくるような効果ができあがりました。


まとめ
C1Reflectorコントロールは、反射効果を簡単に設定できるコントロールです。テキストだけでなく、イメージ画像やコントロールなど、さまざまなコンテンツに適用できるのでデザインの自由度が高く、豊かな表現のWebページを作成できます。

 
              
               
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                              
                               
                              
                               
                              
                               
                              
                               
                              
                               
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
															
														 
															
														.png) 
     
     
     
     
     
													 
													 
													 
													 
													 
										
									

 
                    