如何在位图中使用wxpython绘制文本?
我想在一个 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()