使用wxpython DrawText函数在Bitmap中添加文本

时间:2012-04-27 09:19:02

标签: python bitmap wxpython draw drawtext

我试图制作一个带有漂亮色彩渐变和文字的小图形

颜色渐变现在工作正常(只测试所以代码仍然凌乱) 但文字没有显示

有人可以告诉我我的代码有什么问题吗?

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 24 13:31:18 2012

@author: ksr
"""
import os
import scipy
import pickle
import shutil
import matplotlib.pyplot as plt
from os.path import join as opj
from os import getcwd as cwd
from os import listdir as ld
import wx

def dec2hex(n):
"""return the hexadecimal string representation of integer n"""
return "%X" % n

def hex2dec(s):
    """return the integer value of a hexadecimal string s"""
    return int(s, 16)

def main(text):

    app         = wx.PySimpleApp()

    # Bitmap und DC (Device Context) erstellen
    bitmap      = wx.EmptyBitmap(width = 500, height = 500)
    dc          = wx.MemoryDC(bitmap) # Dieser DC zeichnet nur im Speicher

    # Hintergrund gelb ausmalen
    dc.SetBackground(wx.Brush('#FFFFFF', wx.SOLID))
    dc.Clear()

    # GraphicsContext erstellen (damit sehen die Bilder besser aus)
    gc = wx.GraphicsContext_Create(dc)

    x = 0
    y = 0
    far = 0
    z = 0
    for i in range(0,2001):

        if z%5 == 0 and i < 1000:
            far += 1
            z = 0
        elif z%5 == 0 and i > 1000:
            far -= 1
            z = 0
        farbe = dec2hex(far)


        # Grünen Stift zuweisen
        pen = wx.Pen("#%s0000"%(str(farbe.rjust(2,'0'))), 2, wx.SOLID)#,str(farbe.rjust(2,'0'))
        gc.SetPen(pen)

        # Zwei horizontale Linien zeichnen
        gc.DrawLines(((x, y), (256, 256)))

        print x,y,farbe.rjust(2,'0'),i

        if x < 500 and y == 0:
            x+=1

        elif x == 500 and y < 500: 
            y+=1

        elif y == 500 and x > 0:
            x-=1

        elif x == 0 and y > 0:
            y-=1
        z+=1    

    gc.DrawText('Hello',100,100)    

    # Bitmap vom DC abtrennen und als PNG speichern
    dc.SelectObject(wx.NullBitmap)
    bitmap.SaveFile("new_image.png", wx.BITMAP_TYPE_PNG)


if __name__ == "__main__":
    main()

1 个答案:

答案 0 :(得分:0)

当我运行你的代码时,我收到一个错误,因为没有定义Font,我不知道你是否遇到同样的问题,但在SetFont之前添加任何gc.SetFont(wx.Font(22, wx.SWISS, wx.NORMAL, wx.BOLD))语句{ {1}}您的代码运行正常。

顺便说一句,我将DrawText作为坐标来绘制你的'Hello'文字,就像在300, 300中一样,它在黑色上有点黑,而且不可读。