如果我有一个文本和图像网格,比如日历视图。如果我希望整个网格放下 45 度并且仍然能够响应手指单击/滚动,该怎么做?非常感谢!
问问题
352 次
2 回答
4
有一个非常简单的解决方案。如果您使用 Expression Blend 打开项目,一旦您选择了网格,转到属性选项卡,向下滚动到“变换”,应该有一个名为“旋转”的属性,只需更改 X:Y:Z:值直到网格旋转到您想要的样子。它的行为完全符合您的预期。
这是 XAML 代码:
<Grid.Projection>
<PlaneProjection RotationX="-43"/>
</Grid.Projection>
于 2012-06-13T21:26:52.170 回答
2
好的,如果你在 XNA 中这样做,你会想要使用 Billboard。恐怕我还不需要广告牌,所以我不能给你细节,但像往常一样,有一个Riemers 教程。现在,特别是您想要一个带有控件的交互式广告牌。如果您以前从未有过 3D 体验,这将会很复杂。以下是您要执行的操作:
- 像平常使用 SpriteBatch 一样绘制控件/文本,但事先将 GraphicsDevice 的 RenderTarget 设置为新的 RenderTarget,然后保存。在此处查找有关更改渲染目标的文档。请记住在绘制控件后将其重新设置。
- 现在使用显式转换将 RenderTarget 转换为 Texture2D:
Texture2D myTex = (Texture2D)myRenderTarget;
- 在广告牌上绘制此纹理。
- 现在到了棘手的部分:您需要使用一种称为“拾取”的技术来确定用户在 3D 空间中单击的位置。App Hub 有一些挑选教程,但它们是针对复杂模型的。由于广告牌仅使用具有 2 个三角形的平面,因此在这种情况下它们不会以任何精度工作,而这是您需要的。相反,我建议使用 Viewport.UnProject 来选择飞机。
从本质上讲,您将需要一个好的系统来跟踪可点击的东西在 3D 空间中广告牌上的位置。如果你知道的话,你可以使用平面方程(我想我在微积分 III 中学到了这些)。如果您只需要基本功能,则可以使用这些方程式仅跟踪按钮的中心,然后对点击进行半径测试,但除非您的按钮是圆形,否则这并不完全准确。
如果您不知道,当您尝试在 3D 世界中应用 2D 概念时,事情会很快变得复杂。
于 2012-06-13T18:42:47.617 回答