2012-04-24 59 views
1

我有以下XAML:绝对缩放一个LinearGradientBrush纹理WPF 3D

<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正在拉伸以填充几何图形,而不管使用的纹理坐标如何。

您可以使用ViewportUnits="Absolute"修复衍生画笔TileBrush,但我不知道如何修复LinearGradientBrush。有任何想法吗?

回答

2

使用LinearGradientBrush对全尺寸的RectangleGeometry,并用它在DrawingBrush

<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> 
+0

感谢@marklam的一个LinearGradientBrush设置MappingMode = “绝对”,就像一个魅力! – 2012-04-24 12:05:31