سؤال

وأنا أعمل على WPF الرسم البياني أداة تفاعلية / شجرة ويكون العقد والروابط بينهما وضعها في لوحة زيتية. العقد هي usercontrols والروابط هي ببساطة الأشكال الخط، وحاليا الروابط تذهب من وسط عقدة إلى عقدة مركز آخر.

والمشكلة تنشأ عندما أريد العقد لتكون شفافة قليلا واحد يرى الروابط وراء العقد. وأنا أحسب أن الحل الأكثر ملاءمة يكون لتطبيق لقطة أو opacitymask إلى خطوط، بحيث لا يتم رسمها وراء العقد، ولكن لا أستطيع لحياة لي معرفة كيف؟

وأساسا أنا لا يمكن معرفة هندسة المربع المحيط من العقد لاستخدامه كقاعدة الهندسة لقطة للخطوط. وأنا أيضا مهتمة في حلول بديلة، وبطبيعة الحال!

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

المحلول

ووVisualTreeHelper.GetContentBounds () يبدو طريقة للعودة في كل مرة فارغة.

ويتم الرد حل بديل لهذه المشكلة في

توصيل اثنين WPF عناصر قماش من قبل خط، من دون استخدام المراسي؟

ويستخدم صناديق المحيط إلى إيجاد نقاط تقاطع لرسم خطوط من / إلى.

نصائح أخرى

ويبدو لي ان كنت overthinking الحل. لماذا لا مجرد تغيير منطق الروابط بحيث تكون خطوط تبدأ / نهاية في الجانب الصحيح من عقدة بدلا من البدء من مركز ؟؟؟ يجب عليك سوى أن تفعل المزيد من الرياضيات قليلا لتحقيق ذلك.

وقال ذلك، للحصول على المربع المحيط البصرية يمكنك استخدام VisualTreeHelper :: GetContentBounnds أسلوب مساعد.

ولقد عملنا على شيء مماثل، وكان لدينا حل لوضع روابط والعقد على طبقات مختلفة.

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

وكما طبقات استخدمنا VisualHosts (تجد فئة VisualHost <لأ href = "http://blogs.msdn.com/b/dsimmons/archive/2010/11/28/simple-wpf-2d-graphics-drawingvisual كان .aspx اتصال "يختلط =" نوفولو "> هنا ) لدينا عقدة وربط الأشياء DrawingVisuals.

ويعمل على ما يرام وأنك لا تحتاج إلى مشاحنات حول العثور على حدود العقد الخاص وما إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top