我创建了一个wxPerl应用程序,它只显示一个简单的框架,它只包含一个wxMenuBar,wxPanel,wxTextCtrl和一个wxStaticBitmap。开发和部署平台是Windows XP及更高版本。
图像将添加到表单中:
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()
。创建此wxFrame后,我会在Show(1)
和Refresh()
之后调用Update()
。但到目前为止还没有运气。
答案 0 :(得分:1)
wxStaticBitmap派生自wxWindow,因此它同时具有Update和UpdateWindowUI方法。创建后立即拨打$ logo中的其中一个会发生什么?
编辑:我刚刚尝试过,而Update *方法无济于事。但是, 强制重绘的是在创建对象后调用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中放了一个按钮,上面的代码在它的事件处理程序回调中。