+++ /dev/null
-import wx
-
-METHOD = 1
-SCALE = 0.5
-
-class TestPanel(wx.Panel):
- """
- Shows some ways to scale text down
- """
- def __init__(self, *args, **kw):
- wx.Panel.__init__(self, *args, **kw)
- self.Bind(wx.EVT_PAINT, self.OnPaint)
-
- def OnPaint(self, evt):
- pdc = wx.PaintDC(self)
- font = wx.FFont(28, wx.SWISS)
- pdc.SetFont(font)
- txt = "Here is some text"
-
- # draw the original unscaled text
- pdc.DrawText(txt, 10, 10)
-
- if METHOD == 0:
- # Create a new font that is scaled
- points = font.GetPointSize() * SCALE
- font.SetPointSize(points)
- pdc.SetFont(font)
- pdc.DrawText(txt, 10, 100)
-
- if METHOD == 1:
- # Draw to a bitmap and scale that
- w,h = pdc.GetTextExtent(txt)
- bmp = wx.EmptyBitmap(w, h)
- mdc = wx.MemoryDC(bmp)
- mdc.SetBackground(wx.Brush(self.GetBackgroundColour()))
- mdc.Clear()
- mdc.SetFont(font)
- mdc.DrawText(txt, 0,0)
- del mdc
-
- image = bmp.ConvertToImage()
- image = image.Scale(w*SCALE, h*SCALE, wx.IMAGE_QUALITY_HIGH)
- bmp = wx.BitmapFromImage(image)
- bmp.SetMaskColour(self.GetBackgroundColour())
-
- pdc.DrawBitmap(bmp, 10,100)
-
-
- elif METHOD == 2:
- # Just scale the DC and draw the text again
- pdc.SetUserScale(SCALE, SCALE)
- pdc.DrawText(txt, 10/SCALE, 100/SCALE)
-
-
- elif METHOD == 3:
- # Use a GraphicsContext for scaling. Since it uses a
- # floating point coordinate system, it can be more
- # accurate.
- gc = wx.GraphicsContext.Create(pdc)
- gc.Scale(SCALE, SCALE)
- gc.SetFont(font)
- gc.DrawText(txt, 10/SCALE, 100/SCALE)
-
-
-
-app = wx.App()
-frm = wx.Frame(None, title="test_scaleText")
-pnl = TestPanel(frm)
-frm.Show()
-app.MainLoop()
-