次の方法で共有


方法 : オブジェクトの外縁でグロー効果を作成する

更新 : 2007 年 11 月

このトピックでは、オブジェクトの外縁でグロー効果を作成する方法を説明します。

使用例

OuterGlowBitmapEffect クラスを使用して、表示オブジェクトの周囲にグロー効果を作成することができます。この例では、次の操作の実行方法を示します。

  • 簡単なマークアップを使用して 1 つのオブジェクトにグロー効果を適用する。

  • Style を使用して、1 つ以上のオブジェクトにグロー効果を適用する。

  • 分離コードでのマークアップを使用して、オブジェクトにグロー効果を適用する。

  • アニメーションを使用して、オブジェクトに適用されるグロー効果のプロパティをアニメーション化する。

ms752037.alert_note(ja-jp,VS.90).gifメモ :

次に示す例では、いずれも 1 つのオブジェクトに対して効果を 1 つだけ適用しています。複数の効果を適用するには、BitmapEffectGroup を使用します。詳細については、「方法 : 複数の視覚効果を作成する」を参照してください。

OuterGlowBitmapEffect を使用して、TextBox の外側に青いグローを作成する方法を次の例に示します。

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

  <StackPanel>

    <TextBox Width="200">
      <TextBox.BitmapEffect>

        <!-- <BitmapEffectGroup> would go here if you wanted to apply more 
             then one effect to the TextBox. However, in this example only  
             one effect is being applied so BitmapEffectGroup does not need  
             to be included. -->

        <!-- The OuterGlow is blue, extends out 30 pixels, has the 
             maximum noise possible, and is 40% Opaque. -->
        <OuterGlowBitmapEffect GlowColor="Blue" GlowSize="30" Noise="1"
         Opacity="0.4" />

      </TextBox.BitmapEffect>
    </TextBox>

  </StackPanel>

</Page>

次の図は、前の例で作成された外側のグロー効果を示しています。

スクリーンショット : OuterGlowBitmapEffect ビットマップ効果

Style クラスを使用して、フォーカスを受け取るページのいずれかの TextBoxOuterGlowBitmapEffect を適用する方法を次の例に示します。

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

  <!-- Resources define Styles for the entire page. -->
  <Page.Resources>

    <!-- This style applies to any TextBox on the page. -->
    <Style TargetType="{x:Type TextBox}">
      <Style.Triggers>

        <!-- When the TextBox gains focus such as when the cursor appears
             in the TextBox, apply the OuterGlowBitmapEffect to the TextBox. -->
        <Trigger Property="IsFocused" Value="True">
          <Setter Property = "BitmapEffect" >
            <Setter.Value>

              <!-- The OuterGlow is blue, extends out 30 pixels, has the 
                   maximum noise possible, and is 40% Opaque. -->
              <OuterGlowBitmapEffect GlowColor="Blue" GlowSize="30" Noise="1"
               Opacity="0.4" />
            </Setter.Value>
          </Setter>
        </Trigger>
      </Style.Triggers>
    </Style>
  </Page.Resources>



  <StackPanel>

    <!-- The Style defined above applies to this TextBox which creates
         an outer glow around the it. -->
    <TextBox Name="textBox1"  Width="200" />

  </StackPanel>

</Page>

分離コードでマークアップを使用して、OuterGlowBitmapEffectTextBox に適用する方法を次の例に示します。TextBox がフォーカスを受け取ると、グロー効果が表示されます。この例は、マークアップを示しています。

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.OuterGlowExample" >

  <StackPanel>

    <!-- When this TextBox gains focus, a blue glow surrounds it. -->
    <TextBox Width="200" GotFocus="OnFocusCreateGlow"></TextBox>

  </StackPanel>

</Page>

次の例は、前のマークアップに対してイベントを処理する分離コードを示しています。

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Input;
using System.Windows.Media.Effects;

namespace SDKSample
{

    public partial class OuterGlowExample : Page
    {

        // Add OuterGlow effect.
        void OnFocusCreateGlow(object sender, RoutedEventArgs args)
        {

            // Get a reference to the TextBox.
            TextBox myTextBox = (TextBox)sender;

            // Initialize a new OuterGlowBitmapEffect that will be applied
            // to the TextBox.
            OuterGlowBitmapEffect myGlowEffect = new OuterGlowBitmapEffect();

            // Set the size of the glow to 30 pixels.
            myGlowEffect.GlowSize = 30;

            // Set the color of the glow to blue.
            Color myGlowColor = new Color();
            myGlowColor.ScA = 1;
            myGlowColor.ScB = 1;
            myGlowColor.ScG = 0;
            myGlowColor.ScR = 0;
            myGlowEffect.GlowColor = myGlowColor;

            // Set the noise of the effect to the maximum possible (range 0-1).
            myGlowEffect.Noise = 1;

            // Set the Opacity of the effect to 40%. Note that the same effect
            // could be done by setting the ScA property of the Color to 0.4.
            myGlowEffect.Opacity = 0.4;

            // Apply the bitmap effect to the TextBox.
            myTextBox.BitmapEffect = myGlowEffect;

        }

    }
}

OuterGlowBitmapEffectGlowSize プロパティをアニメーション化して、TextBox がフォーカスを受け取ったときにグローを外側にアニメーション化する方法を次の例に示します。

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" >

  <StackPanel>


    <TextBox Width="200">
      <TextBox.BitmapEffect>

        <!-- This BitmapEffect is targeted by the animation. -->
        <OuterGlowBitmapEffect x:Name="myOuterGlowBitmapEffect"  
         GlowColor="Blue" GlowSize="0" />

      </TextBox.BitmapEffect>
      <TextBox.Triggers>
        <EventTrigger RoutedEvent="TextBox.GotFocus">
          <BeginStoryboard>
            <Storyboard>

              <!-- Animate the GlowSize from 0 to 40 over half a second. --> 
              <DoubleAnimation
                Storyboard.TargetName="myOuterGlowBitmapEffect"
                Storyboard.TargetProperty="GlowSize"
                From="0" To="40" Duration="0:0:0.5" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </TextBox.Triggers>
    </TextBox>

  </StackPanel>

</Page>

サンプル全体については、「ビットマップ効果ギャラリーのサンプル」を参照してください。

参照

処理手順

方法 : ビジュアルにぼかし効果を適用する

方法 : ドロップ シャドウ視覚効果を作成する

方法 : 複数の視覚効果を作成する

方法 : 複数の視覚効果をアニメーション化する

ビットマップ効果ギャラリーのサンプル

概念

ビットマップ効果の概要

その他の技術情報

ビットマップ効果に関する「方法」トピック

ビットマップ効果のサンプル