前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >8.wxPython设置图像遮罩(mask)的方法

8.wxPython设置图像遮罩(mask)的方法

作者头像
用户4381798
发布2020-07-30 21:54:10
1.1K0
发布2020-07-30 21:54:10
举报
文章被收录于专栏:用户4381798的专栏

今天我们讲解几种在wxPython中设置图像mask的几种方法。

xin.png
xin.png

以上面这幅图画为例,嫁接昨天的桌面宠物代码,我们讲解wxPython图像处理为图像设置遮罩的方法。wxPython图像处理类有wx.Image和wx.Bitmap,其中wx.Image是一个与平台无关的类,可以加载各种格式的图形文件,而wx.Bitmap可以将图形显示在屏幕。一般先由wx.Image将图像文件加载,然后转换成wx.Bitmap对象,最后显示在屏幕上。wx.Image有两个函数可以设置图像遮罩:SetMaskColour和SetMaskFromImage,wx.Bitmap有一个函数可以设置图像遮罩:SetMaskColour。今天我们的代码就通过三个函数都实现了图片背景图像遮盖掉的目的。具体实现语句在img.SetMaskColour(255, 242,0),img.SetMaskFromImage(img,255, 242,0),self.bg.SetMaskColour((255, 242,0))三处。

代码语言:javascript
复制
#一个遮盖背景颜色的图像做的桌面精灵
import wx
class myframe(wx.Frame):
    def __init__(self):
        self.x=100
        self.y=100
        super().__init__(parent=None,pos=(self.x,self.y),style=wx.FRAME_SHAPED|wx.STAY_ON_TOP)
        img=wx.Image("xin.png")
        img.SetMaskColour(255, 242,0)
        # img.SetMaskFromImage(img,255, 242,0)
        #鼠标点击图片位置,可以打印特定位置坐标。
        #打印特定位置的点的红绿蓝三通道的颜色,方便设置遮罩
        posX=145
        posY=39
        print(img.GetRed(posX,posY),img.GetGreen(posX,posY),img.GetBlue(posX,posY))
        self.bg=wx.Bitmap(img)
        # self.bg.SetMaskColour((255, 242,0))
        region=wx.Region(self.bg)
        self.SetShape(region)
        self.SetToolTip("皇天后土,主公在上")
        self.Bind(wx.EVT_PAINT,self.onPaint)
        self.Bind(wx.EVT_MOTION, self.OnMouseMotion)
        self.Bind(wx.EVT_RIGHT_UP, self.OnRightClickEvent)
        self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftClickDown)
    def OnLeftClickDown(self, event):
        pos = event.GetPosition()
        print(pos.x,pos.y)
        self.pt = wx.Point(pos.x,pos.y)
    def OnRightClickEvent(self, event):
        wx.Exit()
    def OnMouseMotion(self, event):
        if event.Dragging() and event.LeftIsDown():
            pos = self.ClientToScreen(event.GetPosition())
            self.Move((pos.x-self.pt.x,pos.y-self.pt.y))
    def onPaint(self,event):
        mydc=wx.PaintDC(self)
        mydc.DrawBitmap(self.bg,0,0,True)
myapp=wx.App()
frame=myframe()
frame.Show()
myapp.MainLoop()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档