DrawingBrush性能

时间:2009-08-26 22:17:14

标签: wpf performance drawingbrush

在以下三个边框对象之间的性能方面是否存在差异?

<Border Grid.Column="0" Grid.ColumnSpan="2" Opacity="1">
  <Border.Background>
    <DrawingBrush>
      <DrawingBrush.Drawing>
        <DrawingGroup>
          <GeometryDrawing Brush="Red">
            <GeometryDrawing.Geometry>
              <GeometryGroup>
                <RectangleGeometry Rect="0,0 100,1000" />
                <LineGeometry StartPoint="0,0" EndPoint="100,1000"/>
                <LineGeometry StartPoint="100,0" EndPoint="0,1000"/>
              </GeometryGroup>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
        </DrawingGroup>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Border.Background>
</Border>

<Border Grid.Column="0" Grid.ColumnSpan="2" Opacity="1">
  <Border.Background>
    <DrawingBrush>
      <DrawingBrush.Drawing>
        <DrawingGroup>
          <GeometryDrawing Brush="Red">
            <GeometryDrawing.Geometry>
              <RectangleGeometry Rect="0,0 100,1000" />
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
          <GeometryDrawing>
            <GeometryDrawing.Geometry>
              <LineGeometry StartPoint="0,0" EndPoint="100,1000"/>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
          <GeometryDrawing>
            <GeometryDrawing.Geometry>
              <LineGeometry StartPoint="100,0" EndPoint="0,1000"/>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
        </DrawingGroup>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Border.Background>
</Border>

<Border Grid.Column="3" Grid.ColumnSpan="2" Opacity="1">
  <Image Stretch="Uniform">
    <Image.Source>
      <DrawingImage>
        <DrawingImage.Drawing>
          <DrawingGroup>
            <GeometryDrawing Brush="Red">
              <GeometryDrawing.Geometry>
                <GeometryGroup>
                  <RectangleGeometry Rect="0,0 100,1000" />
                  <LineGeometry StartPoint="0,0" EndPoint="100,1000"/>
                  <LineGeometry StartPoint="100,0" EndPoint="0,1000"/>
                </GeometryGroup>
              </GeometryDrawing.Geometry>
              <GeometryDrawing.Pen>
                <Pen Thickness="20" Brush="Black"/>
              </GeometryDrawing.Pen>
            </GeometryDrawing>
          </DrawingGroup>
        </DrawingImage.Drawing>
      </DrawingImage>
    </Image.Source>
  </Image>
</Border>

1 个答案:

答案 0 :(得分:4)

以下是您的问题的标准答案,这些问题归结为“比A快吗?” ...

尝试两者(或全部三个或多个)并测量执行时间。第一原则的论点不会回答这个问题,尽管它们可能产生大量的热空气。

请不要以为我用巧妙的答案刷你,我现在在那里工作,并行计算地球物理,性能非常重要。难得的经验告诉我,如果A比B快,那么确定的唯一方法就是测量两者。如果不值得编码来衡量差异,那么差异并不重要!