2017-03-03 7 views
-2

ホームボタンにクリックイベントを配置したいiPhoneイメージがあります。クリックイベントで画像の一部にWPF

どのようにWPFでこれを達成できますか?画像にボタンを配置しようとしましたが、望みの結果が得られませんでした。

画像にはどのような種類のコントロールを使用しますか?

<Window.Background> 
    <ImageBrush ImageSource="Images/Skin/full.png" Stretch="Fill"> 
    </ImageBrush> 
</Window.Background> 
+0

画像にはどのような種類のコントロールを使用していますか? – FiN

+0

@FiN: John

+0

WPFは、iPhoneとは何かを持っていますか? –

答えて

1

あなたはCanvasまたはGridのように、適切なパネルに画像を配置し、オーバーレイとして目に見えないボタンを使用することができます。リソースで

<Style x:Key="InvisibleButtonStyle" TargetType="Button"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border Background="Transparent" BorderBrush="Red" BorderThickness="1"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

使用法:

<Grid Width="150" Height="150"> 
    <ImageBrush ImageSource="Images/Skin/full.png" Stretch="Fill"/> 
    <Button x:Name="TopLeft" Margin="0,0,100,100" Click="TopLeft_Click" Style="{StaticResource InvisibleButtonStyle}"/> 
    <Button x:Name="TopRight" HorizontalAlignment="Right" Click="TopRight_Click" Margin="0,0,0,100" Width="100" Style="{StaticResource InvisibleButtonStyle}"/> 
    <Button x:Name="BottomLeft" VerticalAlignment="Bottom" Click="BottomLeft_Click" Margin="0,0,100,0" Height="100" Style="{StaticResource InvisibleButtonStyle}"/> 
    <Button x:Name="BottomRight" HorizontalAlignment="Right" VerticalAlignment="Bottom" Click="BottomRight_Click" Margin="0,0,0,0" Width="100" Height="100" Style="{StaticResource InvisibleButtonStyle}"/> 
</Grid> 

注私は実際にそれが唯一の透明な背景になり、クリック可能な領域を強調するために、透明ボタンに赤い境界線を追加しました。

+0

今、メインウィンドウのキャンバスのために私のユーザコントロールの内容が隠れているという問題があります。 この問題についてご意見はありますか? – John

+0

@John質問にあなたのコンポジション(ウィンドウとユーザーコントロール)を提供していないので、何が間違っているのか私は確信していません。 – grek40

0

あなたがクリック可能であることを画像の一部を必要とするので、私はthisソリューションをお勧めします。リンクから

C/P ...

<Canvas> 
    <Image Source="background.png"/> 
    <Ellipse Canvas.Left="82" Canvas.Top="88" Width="442" Height="216" Fill="Transparent" Cursor="Hand" MouseDown="Ellipse_MouseDown_1"/> 
    <Ellipse Canvas.Left="305" Canvas.Top="309" Width="100" Height="50" Fill="Transparent" Cursor="Hand" MouseDown="Ellipse_MouseDown_2"/> 
</Canvas> 
+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 15403659) – Tom

+0

@thebluefox編集済み... – FiN

0

私は、次の手順を実行して、これを達成した:

<Canvas Height="30" VerticalAlignment="Top" Margin="0,394,0,0" Width="220"> 
      <Button Content="" Canvas.Left="102" Canvas.Top="6" Background="Transparent" Width="16" BorderBrush="Transparent" Cursor="Hand" > 
       <Button.Style> 
        <Style TargetType="{x:Type Button}"> 
         <Setter Property="Background" Value="Transparent"/> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type Button}"> 
            <Border Background="{TemplateBinding Background}"> 
             <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
            </Border> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
         <Style.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter Property="Background" Value="Transparent"/> 
          </Trigger> 
         </Style.Triggers> 
        </Style> 
       </Button.Style> 
      </Button> 
</Canvas> 

はちょうどあなたのマージンを設定しており、キャンバスは、クリック可能なエリアをオーバーレイする位置を左とトップ。

関連する問題