2011-11-03 17 views
10

मैंने पारदर्शी पृष्ठभूमि के साथ कई कैनवास बनाए हैं और इस पर कुछ चाल चलाना चाहते हैं।पारदर्शी पृष्ठभूमि पर माउस ईवेंट

हालांकि, मैंने पाया कि सभी माउस ईवेंट (उदा। माउस लेफ्टबटनडाउन) कैनवास की पृष्ठभूमि का काम नहीं कर सकता है नल या पारदर्शी है। लेकिन अगर मैं पृष्ठभूमि को कुछ ठोस रंग (कहें, लाल या नीला) पर सेट करता हूं, तो माउस इवेंट अच्छी तरह से काम करता है।

क्यों?

क्या मैं माउस ईवेंट फ़ंक्शन को पारदर्शी पृष्ठभूमि के साथ ठीक से बना सकता हूं?

धन्यवाद!

उत्तर

25

मुझे यकीन नहीं है कि आपको मिलने वाले परिणाम क्यों मिलते हैं लेकिन पृष्ठभूमि पारदर्शी होने पर इसे ठीक काम करना चाहिए (यानी आप स्पष्ट रूप से इसे Brushes.Transparent पर सेट कर सकते हैं, या तो XAML या कोड के माध्यम से)। यदि यह शून्य है, तो WPF इसे हिट परीक्षण में शामिल नहीं करेगा, और इस प्रकार यह माउस ईवेंट के लिए योग्य नहीं होगा।

उदा। देखें http://msdn.microsoft.com/en-us/library/ms752097.aspx (एक दृश्य उद्देश्य यह है कि पारदर्शी है भी परीक्षण मारा जा सकता है।)

सबसे अधिक संभावना है कि आप अपने तत्व पेड़ है कि आपके कैनवास से पहले and handling माउस घटना कैप्चर कर रहा है में एक और UIElement है इसे देखता है (e.Handled की स्थापना करके अर्थात true)

+0

धन्यवाद, समाधान वास्तव में मेरे स्टैकपैनल के लिए पृष्ठभूमि = "पारदर्शी" सेट करना था। – Borzh

13

Transparent माउस घटनाओं पर प्रतिक्रिया करता है, यह उसका पूरा बिंदु है, क्या आप सुनिश्चित हैं कि आप कैनवास को भी मार रहे हैं?

<Border Width="300" Height="300" BorderBrush="Black" BorderThickness="1"> 
    <Canvas Background="Transparent"> 
     <Canvas.Triggers> 
      <EventTrigger RoutedEvent="Canvas.MouseLeftButtonDown"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background"> 
          <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Brushes.Red}"/> 
         </ObjectAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Canvas.Triggers> 
    </Canvas> 
    </Border> 

आप संपत्ति यह अब होगा प्रतिक्रिया को हटाने के द्वारा Backgroundnull, या तो स्पष्ट रूप से सेट या परोक्ष हैं:

यहाँ एक XAML-केवल उदाहरण है।

7

ध्यान दें कि पृष्ठभूमि को सेट करने के विरोध में पारदर्शी में सेट करने में कोई अंतर है (या इसे शून्य पर सेट करना)। मेरा अनुभव यह है कि हिट-टेस्टिंग पारदर्शी पर काम करता है, लेकिन शून्य पृष्ठभूमि पर नहीं।

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

  • कोई संबंधित समस्या नहीं^_^