5

我正在为 WPF 中的 AR Drone Quadcopter 创建一个界面。

我在我的 HUD 上需要一些东西以使其可用。

HUD 上更先进的控制之一是人工地平线,它告诉飞行员飞行器当前与地平线对齐。

我有这 3 个 PNG

的背景

大纲 1

大纲 3

我将移动的第一张图像(飞行器的当前俯仰角)和旋转(飞行器的当前滚动)。

我将第二张图片放在第一张上,这张只会围绕中心轴旋转,它有一定程度的刻度,这将使飞行器的滚动更加形象化。

最后一个我将放在第二个之上,这个图像只是一个视觉改进。

然后我想掩盖第一张图片,这样你就只能看到图片 2 中圆圈内的内容。

最后但并非最不重要的一点是我想向它添加一个文本块并显示当前高度

结果将如下所示

结果

我知道如何旋转和移动图像,但是如何将图像放在彼此的顶部,以及如何遮盖第一张图像?

编辑:感谢本,我已经走到了这一步:

旋转不翻译

但我还需要翻译图像 Y 位置(飞机的俯仰)

带翻译

当我添加翻译变换时,我还翻译剪辑(蒙版)如何在不移动蒙版的情况下翻译图像?

4

2 回答 2

4

一个小样本,说明如何使用DrawingGroupsClipGeometry里面的内容。

<Grid>
  <Image Source="Images\Background.jpg" />

  <Image>
    <Image.Source>
      <DrawingImage>
        <DrawingImage.Drawing>
          <DrawingGroup>
            <DrawingGroup>
              <!-- You can rotate a DrawingGroup -->
              <DrawingGroup.Transform>
                <RotateTransform Angle="-15" CenterX="50" CenterY="50" />
              </DrawingGroup.Transform>

              <ImageDrawing ImageSource="Images\last.png" Rect="0,0,100,100" />
              <DrawingGroup.ClipGeometry>
                <EllipseGeometry Center="50,50" RadiusX="25" RadiusY="25" />
              </DrawingGroup.ClipGeometry>
            </DrawingGroup>

            <DrawingGroup>
              <ImageDrawing ImageSource="Images\middle.png" Rect="0,0,100,100" />
              <ImageDrawing ImageSource="Images\outer.png" Rect="0,0,100,100" />
            </DrawingGroup>
          </DrawingGroup>
        </DrawingImage.Drawing>
      </DrawingImage>
    </Image.Source>
  </Image>
</Grid>
于 2011-05-28T12:03:19.413 回答
0

昨晚我很累:D 让背景旋转和平移,但不是剪辑只是将背景放在剪辑组的子组中......现在它可以工作了!

    <Image Width="240" Height="240">
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <DrawingGroup>
                        <DrawingGroup>
                            <DrawingGroup>
                                <DrawingGroup.Transform>
                                    <TransformGroup>
                                        <RotateTransform Angle="-15" CenterX="120" CenterY="120" />
                                        <TranslateTransform Y="-20" />
                                    </TransformGroup>
                                </DrawingGroup.Transform>

                                <ImageDrawing ImageSource="Images\pNxVK.png" Rect="0,0,240,240" />
                            </DrawingGroup>

                            <DrawingGroup.ClipGeometry>
                                <EllipseGeometry Center="120,120" RadiusX="60" RadiusY="60">
                                </EllipseGeometry>
                            </DrawingGroup.ClipGeometry>
                        </DrawingGroup>

                        <DrawingGroup>
                            <ImageDrawing ImageSource="Images\zUr8D.png" Rect="0,0,240,240" />
                            <ImageDrawing ImageSource="Images\XPZW9.png" Rect="0,0,240,240" />
                        </DrawingGroup>
                    </DrawingGroup>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
于 2011-05-30T09:36:40.103 回答