Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在wpf和C中制作定制形状的按钮#_C#_Wpf_Xaml_Wpf Controls_Expression Blend - Fatal编程技术网

C# 在wpf和C中制作定制形状的按钮#

C# 在wpf和C中制作定制形状的按钮#,c#,wpf,xaml,wpf-controls,expression-blend,C#,Wpf,Xaml,Wpf Controls,Expression Blend,一直在寻找并试图得到我的按钮有不同的选择区域(比方形)。制作圆形的形状选择区域并不难,但是这个弧形的形状,我找不到一个很好的答案。 我正试图在Blend for Visual Studio 2013中实现这一点 我目前的代码是: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/

一直在寻找并试图得到我的按钮有不同的选择区域(比方形)。制作圆形的形状选择区域并不难,但是这个弧形的形状,我找不到一个很好的答案。 我正试图在Blend for Visual Studio 2013中实现这一点

我目前的代码是:

   <Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        x:Class="RoundUI.MainWindow"
        Title="MainWindow" Height="350" Width="525"
        AllowsTransparency="True"
        OpacityMask="White"
        WindowStyle="None"
        Background="Transparent">
    <Grid MouseLeftButtonDown="Window_MouseLeftButtonDown" MouseMove="Grid_MouseMove">
        <Grid.Background>
            <ImageBrush ImageSource="smileface.png" />
        </Grid.Background>
        <Image x:Name="image" HorizontalAlignment="Left" Height="100" Margin="212,29,0,0" VerticalAlignment="Top" Width="100" Source="nool.png" RenderTransformOrigin="0.5,0.5" MouseDown="Image_MouseDown_1" MouseEnter="Image_MouseEnter_1" MouseLeave="Image_MouseLeave" Stretch="Fill" >
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="90"/>
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
            <Image.Clip>
                <EllipseGeometry Center="50,50" RadiusX="45" RadiusY="45" />
            </Image.Clip>
        </Image>



        <Image HorizontalAlignment="Left" Height="100" Margin="212,214,0,0" VerticalAlignment="Top" Width="100" MouseDown="Image_MouseDown" Source="nool.png" MouseEnter="Image_MouseEnter_2" MouseLeave="Image_MouseLeave_1" Stretch="Fill" Cursor="IBeam" ToolTip="Hello" />
        <Ellipse Height="100" Width="100" Margin="317,156,108,94" MouseEnter="Ellipse_MouseEnter" MouseLeave="Ellipse_MouseLeave" MouseDown="Ellipse_MouseDown">
            <Ellipse.Fill>
                <ImageBrush ImageSource="Arc.png"/>
            </Ellipse.Fill>
        </Ellipse>
        <TextBlock x:Name="infoBlock" HorizontalAlignment="Left" Margin="229,172,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" FontSize="16"/>
        <TextBlock x:Name="clickBlock" HorizontalAlignment="Left" Margin="354,135,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>
        <Image x:Name="close" HorizontalAlignment="Left" Visibility="Hidden" Source="nool.png" Height="52" Margin="376,10,0,0" VerticalAlignment="Top" Width="69" MouseDown="close_MouseDown"/>

    </Grid>
</Window>


我的问题是,我如何才能使这个绿色区域只可点击。如果它能成为所有形状的通用代码,那就太好了。

弧必须是图像吗

假设不是,在WPF中执行此操作的方法是创建一个路径,您可以使用画笔工具在Blend中执行此操作

注意:如果某个东西应该是一个按钮,通常最好将其添加为控件模板,用于按钮控件。通过添加按钮并从右键单击菜单中选择编辑其模板,可以在Blend中执行此操作。模板应该是您希望按钮看起来像的任何元素(路径/图像/矩形/文本或更复杂的布局)。然后,您可以使用按钮的单击事件,而不是使用MouseDown事件,这通常是一个更好的选择。(另外,按钮在执行MVVM时支持命令)