2011-12-19 156 views
0

我有兩種方法在屏幕上繪製一個旋轉的矩形。DrawingGroup與DrawingVisual轉換

RenderMethod1呈現使用DrawingVisual

private static void RenderMethod1(DrawingContext dc) { 
    DrawingVisual drawingVisual = new DrawingVisual(); 
    using (DrawingContext context = drawingVisual.RenderOpen()) { 
     Rect rect = new Rect(new System.Windows.Point(100, 100), new System.Windows.Size(320, 80)); 
     context.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect); 
    } 
    drawingVisual.Transform = new RotateTransform(30, 100, 100); 
    dc.DrawDrawing(drawingVisual.Drawing); 
} 

RenderMethod2使得使用旋轉30度的矩形旋轉30度的矩形一個DrawingGroup

private static void RenderMethod2(DrawingContext dc) { 
     DrawingGroup group = new DrawingGroup(); 
     DrawingVisual drawingVisual = new DrawingVisual(); 
     using (DrawingContext context = drawingVisual.RenderOpen()) { 
      Rect rect = new Rect(new System.Windows.Point(100, 100), new System.Windows.Size(320, 80)); 
      context.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect); 
     } 
     group.Children.Add(drawingVisual.Drawing); 
     group.Transform = new RotateTransform(30, 100, 100); 
     group.Freeze(); 
     dc.DrawDrawing(group); 
    } 

輸出如下:

RenderMethod1 

enter image description here

RenderMethod2 

enter image description here

正如你可以看到RenderMethod1RenderMethod2輸出應該是完全一樣的,但事實並非如此。我在RenderMethod1有什麼不對嗎?

感謝提前的幫助,

回答

0

我終於解決此問題,通過改變RenderMethod1如下得到,它按預期工作。

private static void RenderMethod1(DrawingContext dc) { 
    DrawingGroup drawingVisual = new DrawingGroup(); 
    using (DrawingContext context = drawingVisual.Open()) { 
     Rect rect = new Rect(new System.Windows.Point(100, 100), new System.Windows.Size(320, 80)); 
     context.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect); 
    } 
    drawingVisual.Transform = new RotateTransform(30, 100, 100); 
    dc.DrawDrawing(drawingVisual); 
}