2009-05-10 13 views
1

なぜ私のコードは黒ではなく灰色の線を印刷しますか?MemoryDCを使用しているときの問題

import wx 

class MyFrame(wx.Frame): 
    def __init__(self,*args,**kwargs): 
     wx.Frame.__init__(self,*args,**kwargs) 
     self.panel=wx.Panel(self,-1,size=(1000,1000)) 
     self.Bind(wx.EVT_PAINT, self.on_paint) 
     self.Bind(wx.EVT_SIZE, self.on_size) 

     self.bitmap=wx.EmptyBitmapRGBA(1000,1000,255,255,255,255) 

     dc=wx.MemoryDC() 
     dc.SelectObject(self.bitmap) 
     dc.SetPen(wx.Pen(wx.NamedColor("black"),10,wx.SOLID)) 
     dc.DrawCircle(0,0,30) 
     dc.DrawLine(40,40,70,70) 
     dc.Destroy() 

     self.Show() 

    def on_size(self,e=None): 
     self.Refresh() 

    def on_paint(self,e=None): 
     dc=wx.PaintDC(self.panel) 
     dc.DrawBitmap(self.bitmap,0,0) 
     dc.Destroy() 

if __name__=="__main__": 
    app=wx.PySimpleApp() 
    my_frame=MyFrame(parent=None,id=-1) 
    app.MainLoop() 

答えて

1

をください32ビットのビットマップのアルファチャンネルによるものです。

wx.DCの代わりにwx.GCDCを使用することをお伝えしました。

0

[OK]を私はWXの新しいバージョン(2.8.9.2)

でテストされ、それもあなたの側で作業している理由今、私は疑問に思います。あなたがパネルをペイントしようとしているが、フレーム

のペイントイベントをオーバーライドする代わりに、既に色の問題を 指摘フレーム/パネル塗装の問題のほかに、この

self.panel.Bind(wx.EVT_PAINT, self.on_paint) 

、すべての罰金となります

+0

わかりやすく聞こえましたが、試してみましたが、線はまだ灰色です。 'self.Bind(wx.EVT_PAINT、self.on_paint)'を 'self.panel.Bind(wx.EVT_PAINT、self.on_paint)'に変更しました。私は2.8.9.2も使用しています.Windows XPのPython 2.6の –

+0

はまだグレーです... – RSabet

関連する問題