首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PathGeometry的Hittest

PathGeometry的Hittest
EN

Stack Overflow用户
提问于 2014-02-24 15:34:12
回答 2查看 744关注 0票数 0

我有一个自定义ShapePathGeometry作为DefiningGeometry

PathGeometry显示文本。

我注意到,当您尝试选择画布上的形状时,您必须准确地选择路径的文本边框。

我希望能够击中周围的矩形。

你怎么解决这个问题,我应该添加一个透明的矩形几何吗?

克里希纳代码:

代码语言:javascript
复制
<DataTemplate DataType="{x:Type vm:TextLabel}">
    <c:Label Left="{Binding Left}" Top="{Binding Top}" IsDragEnabled="True" DragDeltaCommand="{Binding DragCommand}" Text="{Binding Text}" ToolTip="{Binding Code}" Fill="Black" StrokeThickness="0" x:Name="Label"/>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
            <Setter TargetName="Label" Property="Fill" Value="Red"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

但是c:Label只是一个带有格式化文本的自定义形状。Fill是文本的笔刷。因此字符之间/周围的空格不是形状的一部分。是否可以添加透明矩形以使该矩形参与测试?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-24 19:11:39

以下代码起作用:

顶部和左边是自定义DP,用于在画布上给形状一个准确的位置(它们替换了Canvas.Top、Canvas.Left)。

代码语言:javascript
复制
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
    var result = base.HitTestCore(hitTestParameters);
    if (result == null && hitTestParameters.HitPoint.X < (Left + geometry.Bounds.Width) && hitTestParameters.HitPoint.X > Left)
    {
        if (hitTestParameters.HitPoint.Y < (Top + geometry.Bounds.Height) && hitTestParameters.HitPoint.Y > Top)
        {
            result = new PointHitTestResult(this, hitTestParameters.HitPoint);
        }
    }
    return result;
}
票数 0
EN

Stack Overflow用户

发布于 2014-02-24 15:36:59

将容器的背景属性设置为透明的,然后它将工作。

例如,如果您的路径在网格中,那么Grid.Background=“透明”

抱歉,这些编辑,你能试试吗?把c:标签在一个空的网格中,看看会发生什么。喜欢

代码语言:javascript
复制
<Grid Background=White> 
<c:Label Left="{Binding Left}" ...x:Name="Label"/>
</Grid>

您可能需要更改触发器并将其放入Grid.Style中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21992062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档