面板中的抗锯齿图像

时间:2014-11-03 19:04:49

标签: python wxpython wxwidgets

我设置了wxPanel的形状,但是有很多锯齿状的边缘。有没有办法解决这些问题?

在wx.Frame内部,我从黑白.png图像设置形状

mask = wx.Image('Resources/Images/Window/window_alpha_map.png')
mask.ConvertAlphaToMask()
shape = mask.ConvertToBitmap()
shape.SetMask(wx.Mask(shape, wx.BLACK))
self.SetShape(wx.RegionFromBitmap(shape))

在wxPanel内部,我在eraseBackground中设置图像

def onEraseBackground(self, event):
        dc = event.GetDC()
        if not dc:
            dc = wx.ClientDC(self)
            rect = self.GetUpdateRegion().GetBox()
            dc.SetClippingRect(rect)

        dc.Clear()

        background = wx.Image('Resources/Images/Window/window_background.png')
        bmp = background.ConvertToBitmap()
        dc.DrawBitmap(bmp, 0, 0)

以下是我所谈论的一些示例:http://clfu.se/PZn3 http://clfu.se/uE4

有没有办法在wxPython中平滑这些,甚至在我缺少的photoshop中的技巧?

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

你可能最好只使用GraphicsContext小部件绘制图像,因为它支持消除锯齿:

wxPython还允许通过Cairo绘图,它也支持抗锯齿:

最后,你还可以看看FloatCanvas: