Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows runtime 在RenderTransform中使用微小比例时,Windows.UI.Xaml.Shapes.Line会被快速剪裁_Windows Runtime_Winrt Xaml - Fatal编程技术网

Windows runtime 在RenderTransform中使用微小比例时,Windows.UI.Xaml.Shapes.Line会被快速剪裁

Windows runtime 在RenderTransform中使用微小比例时,Windows.UI.Xaml.Shapes.Line会被快速剪裁,windows-runtime,winrt-xaml,Windows Runtime,Winrt Xaml,Winrt与Windows 8.1 我正在使用Windows.UI.Xaml.Shapes.Ellipse在2d中渲染太阳系中的行星和卫星。我用行星的正确位置和大小定义椭圆对象,然后创建一个通用的RenderTransform,将位置和大小的较大值缩放到画布上的像素。变换还用于旋转和平移整个视图。 将整个系统视为一个整体会使所有行星的比例都小于一个像素,所以我在屏幕上缩放行星,使其永远不小于5个像素 这很好,是为了给我的问题的基本背景 现在我想通过这个系统渲染轨道和其他路径,我想我应该使用Win

Winrt与Windows 8.1

我正在使用Windows.UI.Xaml.Shapes.Ellipse在2d中渲染太阳系中的行星和卫星。我用行星的正确位置和大小定义椭圆对象,然后创建一个通用的RenderTransform,将位置和大小的较大值缩放到画布上的像素。变换还用于旋转和平移整个视图。 将整个系统视为一个整体会使所有行星的比例都小于一个像素,所以我在屏幕上缩放行星,使其永远不小于5个像素

这很好,是为了给我的问题的基本背景

现在我想通过这个系统渲染轨道和其他路径,我想我应该使用Windows.UI.Xaml.Shapes.Line来实现这一点,因为Shapes.Line显然没有我需要的渲染变换

例如,当我使用1E+9的冲程厚度(大约一个太阳半径,单位为米)定义一条从0,0(太阳)到150E+9,0(地球轨道距离,单位为米)的线时,我希望看到一条从太阳到地球轨道半径的线,其厚度为太阳的一半

我看到的什么都不是(图1)

然后,当我放大时,通过更改所有对象的公共渲染变换,在比例约为1/1276062的某一点上,线条确实变得可见(图2),并且看起来确实正确。这是一条从太阳中心开始的大直线(在这个缩放级别上占据了屏幕的大部分)。 如果我再进一步放大到大约1/2948,该线将再次变为不可见

在所有缩放级别上,我用于太阳和行星的椭圆的行为与预期一致

这似乎是渲染引擎过早剪裁的问题。它错误地认为这条线太细以至于看不见,然后对它进行了剪辑,但这只是一个猜测,我一直无法通过对这条线的真实剪辑、宽度和高度设置进行嘲弄获得任何不同的结果。可能会注意到我是winrt的新手


在我的例子中,这适用于省略号的原因显然是我使用了一个TransformGroup:一个变换将椭圆的直径从1放大到非常大(行星的直径),然后另一个变换将其再次缩小到屏幕大小。这显然效果不错。另一方面,如果我创建一个具有初始大尺寸的对象(椭圆或直线),然后使用单个变换将其缩小到屏幕大小,那么它不起作用,所以。。。普通大小的对象在大小工程中先向上变换,然后向下变换。大尺寸的物体在尺寸上变小了,但事实并非如此。我要尝试检查的两件事是:和。当你了解像素缩放的本质时,这两种方法都可能产生影响,尤其是布局背景。非常感谢你对这个问题的关注。不过,这两个人似乎都没什么不同。我现在采取的是“手工”的方式。我仍然保留一个转换矩阵,将真实(大)值转换为屏幕坐标,但现在我自己阅读并定位和缩放图形,而不是使用两个转换并依靠系统完成工作。