none
Viewport2DVisual3D 承載子元件 RRS feed

  • 问题

  • 看了一下 MSDN Library 中示例, 在 Viewport3D 放置 Viewport2DVisual3D, Viewport2DVisual3D

    的 Content 是一個 Button.

     

    現在我想實現的效果是:

    1. 在 Viewport3D 中放置一個 Viewport2DVisual3D.

    2. Viewport2DVisual3D.Geometry=MeshGeometry3D 是一個Cube 形體.

    3. Cube 6 個面, 每個面放一個 Grid 元件.

    需要問的是, 第三步如何實現?

     

     

    因爲一個 Viewport2DVisual3D 是 Content 的, 只能放一個 Content.

    還有就是 Content 所在平面的問題.

     

    如果需要 6 個 Viewport2DVisual3D 也真的複雜了.

    2009年1月17日 0:11

答案

  • 你可以把Cube的6个面的背景用VisualBrush来绘制,VisualBrush允许你将一些控件作为另外一些控件的背景

    <GeometryModel3D.Material>
                        <DiffuseMaterial>
                          <DiffuseMaterial.Brush>
                              <VisualBrush>
                                  ...
                              </VisualBrush>                    
                          </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
    2009年1月19日 5:30

全部回复

  • 你可以把Cube的6个面的背景用VisualBrush来绘制,VisualBrush允许你将一些控件作为另外一些控件的背景

    <GeometryModel3D.Material>
                        <DiffuseMaterial>
                          <DiffuseMaterial.Brush>
                              <VisualBrush>
                                  ...
                              </VisualBrush>                    
                          </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
    2009年1月19日 5:30
  • Viewpost3D.Children是Visual3DCollection,所以像ModelVisual3D、Viewport2DVisual3D(都是Visual3D类型)可以成为Viewport3D的孩子。

    用Viewport2DVisual3D当然是为了交互了,

    <Viewport2DVisual3D.Material>
        <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True">
        </DiffuseMaterial>
    </Viewport2DVisual3D.Material>

    就可以承载其他如GridView, Button...等等控件了。。。

    我用了6个Viewport2DVisual3D,也就是6个Viewport2DVisual3D.Geometry,各自描述cube的六个面。六个面可以放置完全不同的东西。

    问题是当我animate camera的Position和LookDirection时,这家伙占资源好厉害啊。这方面不知道有没有解决办法。


    namhyuk
    2010年3月23日 4:01