【问题标题】:Drawing Multiple Paths on A Canvas在画布上绘制多条路径
【发布时间】:2011-06-22 01:23:20
【问题描述】:

我有一个几何对象列表,我想在我的 WPF 应用程序中绘制它们。此几何图形列表未配置为在给定视图内很好地缩放,因此我需要以某种方式缩放每个单独的对象,这可能会导致问题或缩放我认为可能更可取的容器。

我猜我可能想将我的几何对象添加到画布上,但我不确定。我不知道如何确定正确的方法来转换画布以很好地显示其内容。

我只是在寻找有关如何向容器(可能是画布)添加几何图形并让容器自动转换以很好地显示其内容的指导,而不管几何图形的原始大小如何。我已经知道如何将几何图形添加到路径中,但我不知道如何正确缩放画布以很好地缩放和居中显示它的孩子:

path.Data = geometry[i];
canvas.Children.Add(path);

举个例子,假设我想使用一张基本的矩形地图按国家/地区绘制世界地图。假设这些国家以美国为中心,坐标以英里为单位,因此形状大得不切实际。我如何将每个国家添加到一个容器中,然后以国际日期变更线为中心显示整个世界地图?如果地图没有缩放和平移,它只会呈现纯色,因为地图在堪萨斯州会被放大得太远。

【问题讨论】:

    标签: c# wpf canvas path drawing


    【解决方案1】:

    Viewbox 将为您进行缩放,其中的画布作为路径的容器似乎也很好,但我认为画布需要设置为地图的实际大小,因为它不能缩放到它的孩子。

    【讨论】:

    • 这是我的问题的一部分。画布无法缩放,几何尺寸可能为数千像素正方形。我需要弄清楚如何在缩放画布内容的同时缩放画布。您不能只将每条路径缩放 50%;如果你有一个棋盘并且你将每个正方形缩放 50%,你最终会出现差距。您必须按可变数量进行缩放和翻译。这一切似乎都很复杂,必须有更好的方法。
    • 其实每个方格都可以缩放,只需要选择一个共同的中心即可。您还可以向 Grid 添加多个路径,该路径的大小应与其子级相同,但如果形状是独立的,则布局可能会很奇怪,因为它们最终会出现在各种各样的堆栈中。
    • 是的,堆栈的事情发生在那种情况下。我可以在缩放之前为每个路径设置 transformOrigin=(0,0),但我仍然需要知道如何转换画布以很好地显示其子路径。我对 WPF 的了解已经足够危险了;我可能会完全错误地思考/解决这个问题。
    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2022-01-10
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多