سؤال

أحاول استخدام OpacityMask الممتلكات جنبا إلى جنب مع VisualBrush بحيث عندما تقوم بسحب صورة فوق عنصر تحكم آخر (مثل صورة أخرى أو مستطيل أو أي عنصر تحكم آخر) ، جزء من الصورة وهذا هو أكثر عنصر التحكم الثاني مختلف التعتيم.أي أن الصورة لديه بعض غير الصفر قاعدة التعتيم ، أي جزء من الصورة وهذا هو أكثر من عنصر تحكم آخر مختلف (مرة أخرى ، غير الصفر) التعتيم.

هل هذا ممكن ببساطة باستخدام VisualBrush و OpacityMask?أو هو نهج أكثر تعقيدا المطلوبة ؟

وذلك بفضل!

تحرير:أنا في محاولة لجعل صورة بعض أقل التعتيم مثل (0.5) ، الجزء الانجرار للسيطرة على أعلى التعتيم مثل (1.0).أصلا أنا تركت هذا التفصيل ، وهو أمر مهم النهج المتبع.

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

المحلول

وبالإضافة إلى الإجابة معهد العالم العربي، ولقد برزت من ذلك باستخدام قناع التعتيم. يمكنني استخدام التعليمات البرمجية التالية مدمن مخدرات إلى الحدث LayoutUpdated للصورة.

// Make a visual brush out of the masking control.
VisualBrush brush = new VisualBrush(maskingControl);
// Set desired opacity.
brush.Opacity = 1.0;
// Get the offset between the two controls.
Point offset = controlBeingMasked.TranslatePoint(new Point(0, 0), maskingControl);
// Determine the difference in scaling.
Point scale = new Point(maskingControl.ActualWidth / controlBeingMasked.ActualWidth, 
    maskingControl.ActualHeight / controlBeingMasked.ActualHeight);
TransformGroup group = new TransformGroup();
// Set the scale of the mask.
group.Children.Add(new ScaleTransform(scale.X, scale.Y, 0, 0));
// Translate the mask so that it always stays in place.
group.Children.Add(new TranslateTransform(-offset.X, -offset.Y));
// Rotate it by the reverse of the control, to keep it oriented correctly.
// (I am using a ScatterViewItem, which exposes an ActualOrientation property)
group.Children.Add(new RotateTransform(-controlBeingMasked.ActualOrientation, 0, 0));
brush.Transform = group;
controlBeingMasked.OpacityMask = brush;

إذا كنت تريد التعتيم قاعدة المطلوب، استخدم صورتين. واحد وهذا دائما في التعتيم قاعدة، وآخر يستخدم قناع التعتيم الذي يجلس على أعلى من ذلك. إذا كنت تريد التعتيم قاعدة أن تكون أعلى من التعتيم ملثمين، ثم انه قد يكون من الأسهل استخدام نهج معهد العالم العربي في.

وميزة واحدة لهذا الحل بدلا من نهج maskless هي أنه إذا تحرك السيطرة اخفاء، تغيير الحجم، الخ، وهذا سوف يختار تلقائيا التغيير دون الحاجة للحفاظ على عنصر تحكم آخر في تزامن مع ذلك.

وهنا هو كيف يبدو:
<الفرعية> (المصدر: yfrog.com )

نصائح أخرى

  • لا أقنعة
  • تحديد البصرية فرشاة التحكم
  • ترسم شكل الحق على أعلى من التحكم مع فرشاة
  • قم بسحب صورة بين الشكل و التحكم
  • تعيين التعتيم الفرشاة لتحقيق التأثير المطلوب
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top