2010-07-15 17 views
3

您好我想创建一个按钮与一个半弧形的形式是这样的创建按钮:使用GeometryDrawing WPF

alt text http://www.freeimagehosting.net/uploads/6f804323db.jpg

我使用XAML和控制模板,它工作正常,但是,按钮收到
点击事件,即使我在任何地方点击进入由几何形状矩形形式,它推出的单击事件,我希望事件是只有geomtry内抓... 这里是XAML

<ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}"> 
    <Grid> 
     <Image> 
     <Image.Source> 
        <DrawingImage> 
        <DrawingImage.Drawing> 
      <GeometryDrawing x:Name="X"Geometry= "M 0,0 
       A .8,.8 180 1 1 0,4 
       L 0,3 
       A .6,.6 180 1 0 0,1 
       L 0,0"> 
       <GeometryDrawing.Pen> 
       <Pen Brush="Black" Thickness=".1" /> 
       </GeometryDrawing.Pen> 
       <GeometryDrawing.Brush> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
        <GradientStop Offset="0" Color="Blue"/> 
        <GradientStop Offset="1" Color="Red"/> 
       </LinearGradientBrush> 
       </GeometryDrawing.Brush> 
      </GeometryDrawing> 
       </DrawingImage.Drawing> 
       </DrawingImage> 
       </Image.Source> 
       </Image> 
       <Viewbox> 
      <ContentControl Margin="20" Content="{TemplateBinding Content}"/> 
     </Viewbox> 
    </Grid> 
</ControlTemplate> 

... 

<Button Template="{StaticResource ButtonTemplate}" Click="Button_Click" HorizontalAlignment="Right">OK</Button> 

谢谢 对于任何评论

+0

您的图像链接已损坏。 – DaveInCaz 2017-05-16 10:04:10

回答

5

您可以使用带有几何数据的Path元素,而不是使用图像,它具有用于点击测试的矩形边界。该路径只会对大纲定义的区域进行命中测试。无论设置哪种文本或其他内容,都可以点击,除非您在ContentPresenter上设置IsHitTestVisible =“false”。

<Button Content="OK"> 
    <Button.Template> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Grid> 
       <Path Data="M 0,0 
     A .8,.8 180 1 1 0,4 
     L 0,3 
     A .6,.6 180 1 0 0,1 
     L 0,0" Stroke="Black" StrokeThickness="1" Stretch="Uniform"> 
        <Path.Fill> 
         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
          <GradientStop Offset="0" Color="Blue"/> 
          <GradientStop Offset="1" Color="Red"/> 
         </LinearGradientBrush> 
        </Path.Fill> 
       </Path> 
       <Viewbox> 
        <ContentPresenter Margin="20" /> 
       </Viewbox> 
      </Grid> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 
+0

它完美的作品!非常感谢你的帮助 ...! – carlos 2010-07-16 07:25:12