2010-02-12 18 views
7

मेरे पास एक पीएनजी है जिसमें पारदर्शी क्षेत्र हैं और मैं इसे छवि टैग पर सेट करता हूं लेकिन छवि के अपारदर्शी भाग पर होने पर मैं कर्सर को हाथ में कैसे सेट कर सकता हूं?आंशिक रूप से पारदर्शी छवि पर WPF कर्सर

धन्यवाद टोनी

उत्तर

4

यह आप बिटमैप खुद को देखने के लिए की आवश्यकता होगी ऐसा करने के लिए। डब्ल्यूपीएफ की हिट परीक्षण तंत्र किसी भी पिक्सेल को "पारदर्शी" ब्रश के रूप में चित्रित करती है, फिर भी अदृश्य होने के बावजूद क्लिक करने योग्य है। यह आम तौर पर एक अच्छी बात है लेकिन आप जो करने की कोशिश कर रहे हैं उसके रास्ते में आती है। क्योंकि पारदर्शी ब्रश के साथ एक .png पेंट्स, पूरे .png को हिट परीक्षण करते समय चित्रित किया जाता है।

क्या आप अपने MouseMove ईवेंट हैंडलर में क्या करने की जरूरत है:

  1. आगे बढ़ो और सामान्य तरीके से परीक्षण मारा आह्वान।
  2. प्रत्येक HitTestResult आप वापस पाने के लिए, यह जांच लें कि यह एक Image है और यदि हां, तो एक पारदर्शी पिक्सेल माउस अधीन है या नहीं
  3. जब आप एक गैर छवि या का एक गैर-पारदर्शी पिक्सेल पर एक हिट मिल एक छवि, रुको।
  4. के आधार पर एक Cursor मूल्य पर तय करें कि कौन माउस

अधिक निर्धारित करने के लिए एक माउस एक छवि का एक पारदर्शी पिक्सेल खत्म हो गया है कि क्या है:

  1. छवि के लिए माउस सापेक्ष स्थिति प्राप्त करें (e.GetPosition(image))
  2. आप एक बिटमैप सूचकांक
  3. उपयोग BitmapSource.CopyPixels एक 1-पिक्सेल recta कॉपी करने के लिए प्राप्त करने के लिए आप इस बिंदु पर खिंचाव वापस की गणना करना चाहिए खींच उपयोग कर रहे हैं एक सरणी में घुमाओ (यानी। केवल एक पिक्सेल माउस खत्म हो गया है)
  4. पिक्सेल मूल्य है कि देखने के लिए प्राप्त की गई थी की जाँच करें अगर यह एक पारदर्शी पिक्सेल
+0

यह काफी है कि मैं क्या किया है और शानदार ढंग से काम करता है है। – TWith2Sugars

संबंधित मुद्दे