2009-02-24 18 views
10

के साथ डबल बफरिंग मैं wxpython के साथ एक मल्टीप्लाफ्फ़्ट एप्लिकेशन पर काम कर रहा हूं और मुझे पैनल पर ड्राइंग करते समय विंडोज़ पर झटके की समस्याएं थीं। मैं माउस गति घटनाओं के दौरान एक बफर (wx.Bitmap) पर आकर्षित करने के लिए इस्तेमाल किया और मेरे OnPaint विधि से बना है बस लाइन पर:wxpython

dc = wx.BufferedPaintDC(self, self.buffer) 

सुंदर मानक है लेकिन अभी भी मैं विंडोज पर समस्याओं झिलमिलाते था, जबकि सब कुछ ठीक काम किया लिनक्स पर

I __init__ विधि में मेरी समस्या हल हो गई।

अजीब बात यह है कि अब सबकुछ काम करता है भले ही मैं BufferedPaintDC का उपयोग न करें। मैंने अपना आवेदन बदल दिया ताकि सभी ड्राइंग भाग ऑनपेंट विधि में किया जा सके। मैं एक बफर का उपयोग नहीं करता हूं और ड्राइंग सीधे wx.PaintDC पर किया जाता है जिसमें कोई झटकेदार समस्या नहीं होती है।

तो मेरा सवाल है: BufferedPaintDC पूरी तरह से बेकार है? या किसी भी तरह से बहिष्कृत? मैं "WxPython in Action" (2006) के पुस्तक का मालिक हूं और इसमें यह भी उल्लेख नहीं है कि SetDoubleBuffered

उत्तर

5

एक उच्च संभावना है कि SetDoubleBuffered वास्तव में आपके पैनल को स्वचालित रूप से एक buffered डीसी का उपयोग करता है, दस्तावेज़ीकरण नहीं करता है उल्लेख करें कि उन वर्गों को बहिष्कृत किया गया है (और मुझे लगता है कि अगर वे मामले थे तो वे सोचेंगे)।

कार्रवाई में wxPython के बारे में ... 2006 बहुत समय पहले था ... यह संभव है कि SetDoubleBuffered विधि तब मौजूद न हो या लेखक यह दिखाना चाहता था कि चीजें निम्न स्तर पर कैसे काम करती हैं।