سؤال

أحاول التقديم 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.Transform(Matrix) وظيفة؟

هل كانت مفيدة؟

المحلول

ببرمجة لأن دورتك لا مضاعفة من 90deg. يتحول على المستقيم في المستقيم أنه موازٍ لمحور X&Y!

  • تعرض الحالة الأولى المستطيل المعدل الذي لم يتم تدوير رغبة SYOU - يبدو أنه صندوق bouding بعد الدوران
  • الحالة الثانية تفعل ما تتمناه - أولاً "تدوير المحتوى" ، ثم يرسم المستطيل
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top