2009-06-29 7 views
12

मैंने देखा कि सिस्टम को ओवरराइड करते समय। Windows.Window OnRender विधि स्क्रीन पर आकर्षित करने में विफल रहता है। मुझे यकीन है कि इसके लिए एक अच्छा कारण है लेकिन स्पष्टीकरण खोजने में असमर्थ था।WPF Window.OnRender विधि को ओवरराइड करना स्क्रीन पर आकर्षित करने में विफल क्यों होता है?

निम्नलिखित कोड इस दर्शाता है:

using System; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Media; 

namespace WpfApplication1 
{ 
    public partial class Window1 : Window 
    { 
     Pen pen = new Pen(); 

     public Window1() 
     { 
      InitializeComponent(); 
      pen.Brush = Brushes.Black; 
     } 

     protected override void OnRender(DrawingContext dc) 
     { 
      base.OnRender(dc); 
      dc.DrawRectangle(Brushes.Black, pen, new Rect(0, 0, 600, 400)); 
      dc.DrawEllipse(Brushes.Green, pen, new Point(300, 300), 50, 50); 
     } 
    } 
} 

एक FrameworkElement में ड्राइंग तर्क की जगह (फिर एक विंडो की सामग्री के रूप में तत्व की स्थापना) ठीक काम करते हैं।

धन्यवाद,

डैनी

उत्तर

14

जवाब Chales पेज़ॉल्ड here द्वारा दिया जाता है।

उसका उत्तर 'क्यों नहीं पता' है, हालांकि एक टिप्पणी सही ढंग से सुझाव देती है कि खिड़की की पृष्ठभूमि को पारदर्शी करने के लिए बग को ठीक करता है।

+0

"पता नहीं क्यों" वास्तव में सवाल का जवाब नहीं देता है, और यह फिक्स आइटम्स कंट्रोल डेरिवेटिव्स के लिए काम नहीं करता है जो एमवीवीएम का उपयोग कर रहे हैं – user3690202

0
सिर्फ एक चेक के रूप में

, करता हटाया dc.Draw... लाइनों के साथ टुकड़ा काम (यानी यह अतिरिक्त ड्रा आदेशों कि इस मुद्दे का कारण बन अधिभावी या का कार्य है)?

मुझे एक लिंक मिला जो बताता है कि कॉल को फिर से ऑर्डर करने से समस्या हल हो सकती है (यानी पर कॉल करने से पहले dc.Draw... कॉल कर रहा है)।

http://www.codeproject.com/Messages/3356653/Override-OnRender-class-inherits-frameworkelement.aspx

1

मुझे लगता है कि ग्रिड इस समस्या को उत्पन्न करता है। डिफ़ॉल्ट विंडो द्वारा बनें ग्रिड तत्व

4

दरअसल, खिड़की स्वयं चित्रित करती है, जो दूसरों के बीच पृष्ठभूमि के लिए एक आयताकार है। ऑनरेंडर में जो भी जोड़ा जाता है वह पृष्ठभूमि के पीछे है। पृष्ठभूमि को पारदर्शी बनाएं और कोई देख सकता है कि इसके पीछे क्या है।

बटन और ऑनरेंडर का उपयोग करते समय मुझे कम से कम यही पता चला। अगर मैं केवल बटन के भीतर आकर्षित करता हूं, तो कुछ भी नहीं देखा जा सकता है, क्योंकि बटन उस पर खींचा जाता है। लेकिन यदि चित्र बटन सीमाओं से परे फैला हुआ है, तो बाहर कुछ भी देखा जा सकता है।

enter image description here

यहाँ एक खाली बटन एक पीले रंग की पृष्ठभूमि के ऊपर ली गई है। ऑनरेंडर में, मैं एक क्रॉस बनाने वाली 2 ब्लैक लाइन खींचता हूं। लेकिन बटन के बाहर लाइन के केवल हिस्सों को देखा जा सकता है।

वास्तव में ऑनरेंडर का बहुत अजीब व्यवहार!

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