python - 使用MemoryDC时出现的问题

标签 python graphics wxpython

为什么我的代码将线条打印为灰色而不是黑色?

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()

最佳答案

除了框架/面板绘制问题之外,已经指出颜色问题是由于 32 位位图的 Alpha channel 造成的。

我记得读过使用 wx.GCDC 而不是 wx.DC

关于python - 使用MemoryDC时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845071/

相关文章:

python - wxWidgets:BoxSizer 内的面板未按预期运行

python - wxPython 网格函数在第一次传递到 wx.CallAfter 之后突然停止“可调用”

python - 可以做多个图标的 TreeView GUI 小部件/gui 库?

python - 导入 Python 库并在它们不可用时优雅地处理

python - Pandas DataFrame上的NaN替换引发TypeError:找不到匹配的签名

javascript - 在 javascript/flash 中是否有一个 prefuse 端口?

graphics - 如何优化代码以使设置更快

python - Jenkins 执行时间太长

python - (R-->R) 函数的简单自动分类

opengl - VTK(可视化工具包)与 OSG(OpenSceneGraph),其他?