WPF Rect Transform - PullRequest
       18

WPF Rect Transform

3 голосов
/ 05 января 2011

Я пытаюсь применить RotateTransform к Rect объекту со следующим кодом.

Rect transformed = this.Rectangle;
transformed.Transform(this.rotateTransform.Value);
DrawingVisual visual = new DrawingVisual();
DrawingContext context = visual.RenderOpen();
context.DrawRectangle(null, new Pen(Brushes.Blue, 2), transformed);
context.Close();
canvas.Children.Add(visual);

, но прямоугольник не поворачивается.Однако, когда я нажимаю преобразование на DrawingContext, как в следующем коде, прямоугольник преобразовывается правильно.

Rect transformed = this.Rectangle;
DrawingVisual visual = new DrawingVisual();
DrawingContext context = visual.RenderOpen();
context.PushTransform(this.rotateTransform);
context.DrawRectangle(null, new Pen(Brushes.Blue, 2), transformed);
context.Pop();
context.Close();
canvas.Children.Add(visual);

Есть ли способ преобразовать Rect, как в первом фрагменте кода с Rect.Transform(Matrix)функционировать?

1 Ответ

2 голосов
/ 06 января 2011

Вероятно, потому что ваше вращение не кратно 90 градусам. Transform on Rect приводит к прямому, что он параллелен оси x & y!

  • В первом случае отображается измененный прямоугольник, который не был повернут по желанию - кажется, что это растущая коробка после вращения
  • Второй случай делает то, что вы хотите - сначала «вращайте содержимое», затем рисует прямоугольник
...