Pergunta

Estou tentando aplicar RotateTransform para um Rect Objeto com o seguinte código.

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);

Mas o retângulo não é girado. No entanto, quando eu empurro a transformação para o DrawingContext, como no código a seguir, o retângulo é transformado corretamente.

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);

Existe uma maneira de transformar um ret como no primeiro fragmento de código com Rect.Transform(Matrix) função?

Foi útil?

Solução

Prabavelmente porque sua rotação não é múltipla de 90 graus. Transforme no RECT resulta em Rect que é paralelo ao eixo X&Y!

  • O primeiro caso renderiza o retângulo modificado que não é girado um desejo de syou - parece estar bouding caixa após rotação
  • Segundo caso, faça o que você deseja - primeiro "gire o conteúdo" e depois desenha retângulo
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top