[I,map,alpha] = imread('im.png')
h = imshow(I)
set(h,'AlphaData',alpha)
但对于控件而言,只能通过CData属性指定图像数据,而没有指定透明度的手段,所以,要想实现透明效果,只能在读图片时把透明色以控件的背景色代替。例如:
BG = get(gcf,'defaultuicontrolback')
[I,map] = imread('im.png','BackgroundColor',BG)
希望对题主有帮助,有问题可追问。
另,看到题主在MATLAB中文论坛上也有提问,我在那里也回答了,有问题也可以在那里讨论。毕竟度娘过于傲娇,限制多多,一不小心就抽风。不过,如果在那里讨论的话,还是请通过私信或者在这里追问的方式告诉我一声,因为我不经常访问那里。
用wxformbuilder+一点代码来实现。首先用wxformbuilder来做出界面,并生成代码。运行结果:
使其有背景图片效果:
#coding:utf-8
import wx
#导入wxformbuilder生成的代码
import BgDemo
class Main(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect, filename)
dlg = BgDemo.MyFrame(None)
#这里设置哪个控件需要设置背景
dlg.m_panel1.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
dlg.Show()
def OnEraseBackground(self, evt):
"""
设置背景的方法
"""
dc = evt.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap("Sunset.jpg")
dc.DrawBitmap(bmp, 0, 0)
if __name__ == "__main__":
app = Main()
app.MainLoop()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)