【问题标题】:In a WPF user control, how do I specify coordinates relative to the control's total size, so that the control will scale correctly?在 WPF 用户控件中,如何指定相对于控件总大小的坐标,以便控件正确缩放?
【发布时间】:2010-07-15 10:43:16
【问题描述】:

我用 WPF 创建了这个简单的展开按钮用户控件:

        

我设计了 WidthHeight 都设置为 100 的东西,这样我就可以看到我实际在做什么。此用户控件的精简 XAML 是:

<UserControl x:Class="Foobar.ExpandButton"
             ...
             Width="100" Height="100">
    ...
    <Border>
        ...
        <Canvas>
            <Line ... X1="20" Y1="20" X2="50" Y2="50"/>
            <Line ... X1="80" Y1="20" X2="50" Y2="50"/>
            <Line ... X1="20" Y1="50" X2="50" Y2="80"/>
            <Line ... X1="80" Y1="50" X2="50" Y2="80"/>
        </Canvas>
    </Border>
</UserControl>

最终,按钮应该能够以各种尺寸正确显示,例如在 20 × 20 点。但是,由于Line 元素使用的坐标,我不能像这样在另一个窗口中插入这个用户控件:

<foobar:ExpandButton Width="20" Height="20" />  <!-- doesn't scale correctly! -->

可以应用LayoutTransformScaleTransform,每次我使用不同于默认100 × 100 点的其他尺寸的元素,但必须有更好的解决方案。 p>

如何定义线条的坐标,使其相对于用户控件的总大小?

【问题讨论】:

标签: wpf xaml coordinates scaling


【解决方案1】:

您可以将图像放在视图框内,或放在 VisualBrush 内并使用矩形来绘制它(将画笔设置为 Rectangle.Fill 属性)。

更好的是,将您的图像转换为绘图对象(将 Canvas 替换为 DrawingGroup,并将其中的形状替换为 GeometryDrawing)并使用 DrawingBrush 进行绘制。

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多