使用Windows 8.1的Winrt
我正在使用Windows.UI.Xaml.Shapes.Ellipse在2d中在太阳系中渲染行星和卫星。我用行星的正确位置和大小定义椭圆对象,然后创建一个常见的RenderTransform,它将位置和大小的大值缩小到画布上的像素。变换还用于旋转和平移整个视图。 将整个系统视为一个整体可以使比例尺使得所有行星都小于一个像素,因此我将行星比例缩小到屏幕上不小于5个像素。
这很好用,是为了解决我的问题的基本背景。
我现在想通过这个系统渲染轨道以及其他路径,我想我会使用Windows.UI.Xaml.Shapes.Line,因为Shapes.Line显然没有渲染变换我需要。
例如,当我使用1E + 9的StrokeThickness(大约一个太阳半径,以米为单位)定义从0,0(太阳)到150E + 9,0(地球的轨道距离,以米为单位)的直线时,我希望看到从太阳到地球轨道半径的一条线,厚度为太阳的一半。
我看到的是什么(图1)。
当我然后放大时,通过更改所有对象的常见renderTransform,当刻度约为1/1276062时,该线变为可见(图像2)并且看起来确实正确。它是从太阳中心开始的一条大线(在这个缩放级别占据了大部分屏幕)。 如果我再进一步放大到大约1/2948,则该线再次变为不可见。
在所有缩放级别,我用于太阳和行星的椭圆,表现如预期。
这似乎是渲染引擎过早剪切的问题。它错误地认为线条太薄而无法看到它然后剪辑它,但这只是一个猜测而且我无法通过线条上的虚假剪辑,宽度和高度设置来模拟任何不同的结果。可能会注意到我是winrt的新人。