画像を操作するボタンがいくつかあります。これらのボタンを画像の上に配置する必要があります。ボタンは画像そのものであるべきです。
ボタンは半透明にする必要があります。
ユーザーがどのコントロールがアクティブであるかを知ることができるように、画像/色はクリックで変更する必要があります。
ボタンの上にカーソルを置くと、不透明度が増加するはずです。
どうすればこれらを行うことができますか。カスタム コントロールの作成方法や使用するコントロールに関するガイドラインは非常に役立ちます。
画像を操作するボタンがいくつかあります。これらのボタンを画像の上に配置する必要があります。ボタンは画像そのものであるべきです。
ボタンは半透明にする必要があります。
ユーザーがどのコントロールがアクティブであるかを知ることができるように、画像/色はクリックで変更する必要があります。
ボタンの上にカーソルを置くと、不透明度が増加するはずです。
どうすればこれらを行うことができますか。カスタム コントロールの作成方法や使用するコントロールに関するガイドラインは非常に役立ちます。
あなたの要件を正しく理解していれば、ToggleButton はあなたが望むものを提供するはずだと思います。
Border
基本的に、マウス オーバー ビジュアル用に1 つの半透明を作成Border
し、チェックされていないビジュアル用に別の半透明を作成する必要があります。次に、状態がアクティブなVisualStateManger
ときに、 ;を表示します。状態がアクティブな場合は、 を表示します。MouseOver
MouseOverVisual
Unchecked
UncheckedVisual
Expression Blend でスタイルを簡単にモックアップしました。完璧ではありませんが、少なくともいくつかのアイデアが得られます。:)
<Style x:Key="SemiTransparentImageToggleButtonStyle" TargetType="ToggleButton">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="MouseOverVisual">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="UncheckedVisual" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed"/>
<VisualState x:Name="Disabled"/>
</VisualStateGroup>
<VisualStateGroup x:Name="CheckStates">
<VisualState x:Name="Checked"/>
<VisualState x:Name="Unchecked">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="UncheckedVisual">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused"/>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
<Border x:Name="MouseOverVisual" Background="White" Opacity="0.5" Visibility="Collapsed" OpacityMask="Black"/>
<Border x:Name="UncheckedVisual" Background="White" Opacity="0.7" Visibility="Collapsed"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>