2009-10-12 14 views
9

Kullanıcının ekran etrafında denetimleri sürüklemesini sağlayan bir tasarımcı yazıyorum. Bir denetimi tek bir denetimi sürüklerken başka bir denetimin üst üste gelip gelmediğini algılamanın en iyi yolu ne olurdu?2 denetimin WPF'deki bir tuval üzerinde birbiriyle çakışıp çakışmadığını nasıl kontrol edebilirim?

Sadece FrameworkElement öğesinin boyutlarını almalı ve diğer öğelerin boyutlarını kontrol etmeye devam etmeli miyim?

Teşekkürler. Eli

+1

sınırlayıcı dikdörtgenler üst üste eğer öğrenmek istiyorsunuz Rect.IntersectsWith yöntemi veya görünür alanları kullanabilir? Örneğin, iki elips birbiriyle örtüşen dikdörtgenlere sahip olabilir, ancak gerçek elipsler bile dokunmayabilir. –

cevap

4

her zaman dikdörtgen ise senin elemanların boyut (FrameworkElement.ActualWidth FrameworkElement.ActualHeight) ve konumu (Canvas.Top, Canvas.Bottom, Canvas.Left, Canvas.Right) yeterli olacaktır. Bu durumda, iki dikdörtgenin üst üste gelip gelmediğini kolayca hesaplayabilirsiniz. Eğer elemanlar daha karmaşık şekillerde olabilirlerse kıllı olur. WPF'de iki Görsel örneğin kesişimini test edip edemeyeceğimi bilmiyorum.

Belki hittesting'u kullanabiliriz? Bu yaklaşımla en azından belirli bir point veya geometry'un bir certian görseliyle kesişip geçmediğini test edebilirsiniz. Dolayısıyla, 2. görüntünüzün sınırlarını çok yakından eşleştiren bir geometri veya bir puan listesi tanımlamanız gerekir.

17

Sen

+1

WinRT Metro uygulamaları için, herhangi bir kesişim olmadığında boş bir dikdörtgen ve varsa gerçek bir sonuç verecek Rect.Intersect değeri de vardır. –

+1

Tks Den! Bunu WinRT için arıyordum. – andrecarlucci

İlgili konular