none
XAMLに書いたBevelBitmapEffectが機能しない RRS feed

  • 質問

  • タイトルの通り、以下のようなコードで普通のボタンとBevelBitmapEffectをかけたボタンとを表示したところ、

    どちらも全く同じボタンが表示されてしまいます。

    新しいプロジェクトを作ってからMainWindow.xamlを以下のように書き換えた以外は操作していません。

    いくつかのサイトを見て回っても、BitmapEffectの間にBevelBitmapEffectを書いており、どこがおかしいのか全く見当もつきません。

    どなたか間違えている箇所を教えていただけませんでしょうか。

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WindowsApplication1" Height="300" Width="300"
    FontSize="24"
        >
        <StackPanel>
            <Button Margin="20" VerticalAlignment="Top">
                BitmapEffect 無し
            </Button>
            <Button Margin="20" VerticalAlignment="Top">
                BevelBitmapEffect
                <Button.BitmapEffect>
                    <BevelBitmapEffect BevelWidth="20"/>
                </Button.BitmapEffect>
            </Button>
        </StackPanel>
    </Window>

    • 移動 佐伯玲 2012年10月22日 7:39 (移動元:Visual C#)
    2012年10月22日 4:52

回答

  • 以下のページに書かれているように、BevelBitmapEffect は、互換性のために残されています。

    BevelBitmapEffect クラス
    http://msdn.microsoft.com/ja-jp/library/system.windows.media.effects.bevelbitmapeffect.aspx

    BevelBitmapEffect がうまく働かないのは.NET Framework 4以上を使用されているからだと思います。
    .NET Framework 3.5だとうまく動作するはずです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク blue_wind_ 2012年10月22日 7:17
    2012年10月22日 5:19
    モデレータ
  • 今回は4以上の機能を使っていなかったため問題無かったのですが、4以上で同じような事をしたい場合、代替先のSystem.Windows.Media.Effects.Effectクラス
    http://msdn.microsoft.com/ja-jp/library/system.windows.media.effects.effect.aspx
    にはBlurEffect、DropShadowEffect、ShaderEffectしか無いため、3.5のように簡単にエンボス効果をかけることはできないのでしょうか。

    この辺りについては私は明るくないのですが、以下のページを見つけました。

    Getting Started with Shader Effects in WPF
    http://www.codeproject.com/Articles/71617/Getting-Started-with-Shader-Effects-in-WPF

    このページに、エンボス効果などを実現するクラスが用意されなかった理由等が、推測ですが書かれています。
    エンボス効果を得るには、斜め読みですが、このページのRecommended Resourcesに書かれているリンク先が役に立つように思いました。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク blue_wind_ 2012年10月22日 9:38
    2012年10月22日 9:06
    モデレータ

すべての返信

  • 以下のページに書かれているように、BevelBitmapEffect は、互換性のために残されています。

    BevelBitmapEffect クラス
    http://msdn.microsoft.com/ja-jp/library/system.windows.media.effects.bevelbitmapeffect.aspx

    BevelBitmapEffect がうまく働かないのは.NET Framework 4以上を使用されているからだと思います。
    .NET Framework 3.5だとうまく動作するはずです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク blue_wind_ 2012年10月22日 7:17
    2012年10月22日 5:19
    モデレータ
  • >trapemiyaさん

    ありがとうございます、おっしゃるとおり3.5に設定したところ、問題無く動作しました。

    今回は4以上の機能を使っていなかったため問題無かったのですが、4以上で同じような事をしたい場合、代替先のSystem.Windows.Media.Effects.Effectクラス
    http://msdn.microsoft.com/ja-jp/library/system.windows.media.effects.effect.aspx
    にはBlurEffect、DropShadowEffect、ShaderEffectしか無いため、3.5のように簡単にエンボス効果をかけることはできないのでしょうか。



    >佐伯玲さん
    ありがとうございます。
    こちらからはカテゴリの移動ができないため、よろしくお願いいたします.



    2012年10月22日 7:32
  • 今回は4以上の機能を使っていなかったため問題無かったのですが、4以上で同じような事をしたい場合、代替先のSystem.Windows.Media.Effects.Effectクラス
    http://msdn.microsoft.com/ja-jp/library/system.windows.media.effects.effect.aspx
    にはBlurEffect、DropShadowEffect、ShaderEffectしか無いため、3.5のように簡単にエンボス効果をかけることはできないのでしょうか。

    この辺りについては私は明るくないのですが、以下のページを見つけました。

    Getting Started with Shader Effects in WPF
    http://www.codeproject.com/Articles/71617/Getting-Started-with-Shader-Effects-in-WPF

    このページに、エンボス効果などを実現するクラスが用意されなかった理由等が、推測ですが書かれています。
    エンボス効果を得るには、斜め読みですが、このページのRecommended Resourcesに書かれているリンク先が役に立つように思いました。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク blue_wind_ 2012年10月22日 9:38
    2012年10月22日 9:06
    モデレータ
  • わざわざ教えていただきありがとうございます。

    なるほど、3.5に比べると比較的大変な手順が必要そうですね…

    今回は4にこだわりがないので、教わったとおり3.5にして作ることにします。

    どうもありがとうございました。

    2012年10月22日 9:40