1

私は次のXAMLを持っています:

    <Viewport3D>
      <Viewport3D.Camera>
        <OrthographicCamera FarPlaneDistance="100" LookDirection="0, 0,-1" UpDirection="0,1,0" NearPlaneDistance="1" Position="0,0,5" Width="10" />
      </Viewport3D.Camera>
      <ModelVisual3D>
        <ModelVisual3D.Content>
      <DirectionalLight Color="White" Direction="0,0,-1" />
        </ModelVisual3D.Content>
      </ModelVisual3D>
      <ModelVisual3D>
        <ModelVisual3D.Content>
          <GeometryModel3D>
            <GeometryModel3D.Material>
              <DiffuseMaterial>
                <DiffuseMaterial.Brush>
                  <LinearGradientBrush>
                    <GradientStop Color="Yellow" Offset="0" />
                    <GradientStop Color="Blue" Offset="1" />
                  </LinearGradientBrush>
                </DiffuseMaterial.Brush>
              </DiffuseMaterial>
            </GeometryModel3D.Material>
            <GeometryModel3D.Geometry>
              <MeshGeometry3D Positions="-1,-1,0 -1,1,0 1,1,0 1,-1,0" TriangleIndices="0,2,1 2,0,3" TextureCoordinates="0,0 .5,0, .5,.5 0,.5"/>
          </GeometryModel3D.Geometry>
        </GeometryModel3D>
      </ModelVisual3D.Content>
    </ModelVisual3D>
  </Viewport3D>

私が欲しいのは、グラデーションの半分だけを使用することです(テクスチャ座標は0から0.5までしか移動しないため)。残念ながら、は、LinearGradientBrush使用されているテクスチャ座標に関係なく、ジオメトリを塗りつぶすためにストレッチしています。

TileBrushを使用して派生ブラシでこれを修正できますがViewportUnits="Absolute"、を修正する方法がわかりませんLinearGradientBrush。何か案は?

4

2 に答える 2

2

フルサイズのを使用し、それを:LinearGradientBrushで使用します。RectangleGeometryDrawingBrush

<DrawingBrush ViewportUnits="Absolute">
    <DrawingBrush.Drawing>
       <GeometryDrawing>
          <GeometryDrawing.Geometry>
              <RectangleGeometry Rect="0,0,1,1" />
          </GeometryDrawing.Geometry>
          <GeometryDrawing.Brush>
              <LinearGradientBrush>
                   <GradientStop Color="Yellow" Offset="0" />
                   <GradientStop Color="Green" Offset="0.5" />
                   <GradientStop Color="Blue" Offset="1" />
               </LinearGradientBrush>
          </GeometryDrawing.Brush>
       </GeometryDrawing>
    </DrawingBrush.Drawing>
 </DrawingBrush>
于 2012-04-24T12:00:53.483 に答える
1

LinearGradientBrush で MappingMode="Absolute" を設定すると機能するはずです

于 2014-07-15T10:57:51.250 に答える