2010-07-15 54 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