我做了一个wxPerl应用程序,它只展示了一个只包含wxMenuBar,wxPanel,wxTextCtrl和wxStaticBitmap的简单框架。 开发和部署平台是Windows XP及更高版本。
图像被添加到像这样的forms:
my $logoData = Wx::Bitmap->new(App::Resource::Images::getLogoPath(), wxBITMAP_TYPE_BMP); my $logo = Wx::StaticBitmap->new($self, -1, $logoData);
我没有显示图像的问题。 我用Inno Setup做了一个安装程序,在用户的桌面上添加一个图标。 如果应用程序开始使用该快捷方式,窗口不会绘制我的wxStaticBitmap。 只有当应用程序失去焦点并且其他窗口正在移动时,才会绘制我的wxStaticBitmap。
当从开始菜单启动应用程序时,快速启动,或者直接使用wxpar编译之后,或者使用perl interperter显示我的wxStaticBitmap的罚款。
我唯一发现的是在我的wxFrame上调用Refresh()
和Update()
。 创build这个wxFrame后,我调用Show(1)
并在Refresh()
和Update()
。 但到目前为止,没有运气。
wxStaticBitmap是从wxWindow派生的,因此它有Update和UpdateWindowUI方法。 在创建它之后立即调用$ logo上的一个标志,会发生什么?
编辑 :我只是试了一下,更新*方法没有帮助。 但是,强制重绘的是在创建对象之后调用SetBitmap
。 以下是我所做的:
my $bmp = Wx::Bitmap->new("./testcard.bmp", wxBITMAP_TYPE_BMP); my $logo = Wx::StaticBitmap->new($frame, wxID_ANY, $bmp); $logo->SetBitmap($bmp);
$frame
是一个Wx::Frame
,我只是把一个按钮放在一个sizer中,而上面的代码在它的事件处理函数回调中。