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

3 投票
2 回答
5557 浏览
提问于 2025-04-15 21:16

我想在一个 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()

这段代码只给我一个黑色的图像,我哪里出错了?

这里缺少了什么呢……

2 个回答

1

你使用的是一个叫做 wx.MemoryDC 的东西。

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

撰写回答