如何使用wxPython在位图中绘制文本?

3
我想在wx.EmptyBitmap中心绘制一个数字。如何使用wxpython实现呢?谢谢! :)
import wx

app = None

class Size(wx.Frame):
    def __init__(self, parent, id, title):
        frame = wx.Frame.__init__(self, parent, id, title, size=(250, 200))
        bmp = wx.EmptyBitmap(100, 100)
        dc = wx.MemoryDC()
        dc.SelectObject(bmp)
        dc.DrawText("whatever", 50, 50)
        dc.SelectObject(wx.NullBitmap)
        wx.StaticBitmap(self, -1, bmp)
        self.Show(True)


app = wx.App()
Size(None, -1, 'Size')
app.MainLoop()

这段代码只显示了一张黑色图片,我做错了什么?这里缺少什么...

你需要将位图清除为适当的颜色,并使用适当的颜色绘制文本... - Will
2个回答

5

在wx.MemoryDC中选择bmp,在该dc上画任何东西,然后将该位图选择出来。

import wx

app = None

class Size(wx.Frame):
    def __init__(self, parent, id, title):
        frame = wx.Frame.__init__(self, parent, id, title, size=(250, 200))
        w, h = 100, 100
        bmp = wx.EmptyBitmap(w, h)
        dc = wx.MemoryDC()
        dc.SelectObject(bmp)
        dc.Clear()
        text = "whatever"
        tw, th = dc.GetTextExtent(text)
        dc.DrawText(text, (w-tw)/2,  (h-th)/2)
        dc.SelectObject(wx.NullBitmap)
        wx.StaticBitmap(self, -1, bmp)
        self.Show(True)


app = wx.App()
app.MainLoop()

Anurag,你能告诉我我发布的代码有什么问题吗?:) - aF.
@aF,我已经更新了代码,现在dc已被清除,我计算出了文本的正确垂直和水平居中位置。 - Anurag Uniyal

1

1
在 wxPython 演示中有很多例子。只是提醒一下。 - Steven Sproat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接