Transformação Rect WPF
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?
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