DrawingGroup Vs DrawingVisual Transform - PullRequest
       14

DrawingGroup Vs DrawingVisual Transform

0 голосов
/ 19 декабря 2011

У меня есть два метода, которые рисуют повернутый прямоугольник на экране.

RenderMethod1 визуализирует прямоугольник, повернутый на 30 градусов с использованием 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 градусов, используя 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

Как вы можете видеть, RenderMethod1 и RenderMethod2 выходы должны быть точно такими же, но это не так. Есть ли что-то, что я делаю неправильно в RenderMethod1?

Заранее спасибо за помощь,

1 Ответ

0 голосов
/ 20 декабря 2011

Я наконец-то обошел проблему, изменив 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...