【问题标题】:WPF UserControl as PolygonWPF 用户控件作为多边形
【发布时间】:2021-02-04 11:50:57
【问题描述】:

我是这个 WPF 世界的新手,我对经典的 Windows 桌面应用程序有一些经验。 我正在尝试创建一个自定义的 UserControl 多边形。 我尝试创建一个路径数据,然后将 UserControl Opacity 属性设置为“0”,但它使整个 UserControl 变得透明。

例如,我在用户控件中构建了这个多边形

<UserControl x:Class="WindowsFormsApp2.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
Width="640" Height="480" Opacity="100">

<Grid x:Name="LayoutRoot">
    <Path Data="M-70.616296,46.859802 L7.3270039,-1.2587545 174.31959,52.958763 168.71134,98.185567 z" Fill="#FF2121D6" HorizontalAlignment="Left" Height="100" Margin="138,114,0,0" Stretch="Fill" Stroke="Black" Opacity ="100" VerticalAlignment="Top" Width="246"/>
</Grid>

如您所见,用户控件为 640x480,因此当我向 UserControl_MouseLeftButtonDown 事件添加代码时,如果在 640x480 内的任何位置单击它就会触发,而我只想在多边形内单击时触发。

我一直在谷歌搜索解决方案,但找不到任何解决方案,¿也许我想要的它不可能?

【问题讨论】:

  • 只有一个Path的时候,控件的目的是什么?直接使用路径。
  • 嗨@Clemens,我该怎么做?,我是这个世界的新手。目的是能够使用几个不同的用户控件来制作像拼图一样的东西,所以每个部分都有自己的行为。想想阴阳这个数字。
  • 您不需要用户控件。路径或多边形也是您可以直接放入容器面板中的 UI 元素,例如画布。请不要尝试在没有任何知识的情况下启动 WPF。阅读一些介绍性材料确实很有帮助,例如一本书。

标签: wpf xaml blend


【解决方案1】:

您可以将UserControl 模板化为一个多边形:

<UserControl x:Class="WpfApp1.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <UserControl.Template>
        <ControlTemplate TargetType="UserControl">
            <Path Data="M-70.616296,46.859802 L7.3270039,-1.2587545 174.31959,52.958763 168.71134,98.185567 z" 
                  Fill="#FF2121D6" HorizontalAlignment="Left" Height="100" Margin="138,114,0,0" 
                  Stretch="Fill" Stroke="Black" Opacity ="100" VerticalAlignment="Top" Width="246"/>
        </ControlTemplate>
    </UserControl.Template>
</UserControl>

或者你可以去掉UserControl,直接使用Path元素。它还有一个您可以处理的MouseLeftButtonDown 事件。

【讨论】:

  • Thx @mm8 我会检查但似乎这是我需要的。我想制作一个具有不同形状的用户控件库,有点像拼图。
猜你喜欢
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2023-03-03
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
相关资源
最近更新 更多