пишу на wxperl, наткнулся на вот такую странность
есть у меня функция, которая берёт картинку, допечатывает на ней номер и отображает
код вот такой
sub ShowBall{
my ($self,$balln,$ballval)=@_;
my $blbl=sprintf('%02d',$balln);
my $label='ball'.$blbl;
my $dc=Wx::MemoryDC->new();
#Load ball picture
$dc->SelectObject(Wx::Bitmap->new("ball.png", wxBITMAP_TYPE_ANY));
#Set text params
$dc->SetTextForeground(Wx::Colour->new(@{$C::config->{BallTextFore}}));
$dc->SetTextBackground(Wx::Colour->new(@{$C::config->{BallTextBack}}));
$dc->SetFont(Wx::Font->new($C::config->{BallFontSize}, wxDEFAULT, wxSLANT, wxBOLD, 0, ""));
#write label
my $xc=($ballval>=10)?14:26;
$dc->DrawText($ballval,$xc,17);
$self->{$label}->SetBitmap( $dc->GetAsBitmap());
undef $dc;
}
картинки с шариками, их несколько, которая именно задаётся 2м параметром функции, 3й - что именно надпечатать
на Линуксе всё работает отлично, но под виндами картинка не прорисовывается
(точнее прорисовывается чёрт знает когда, закономерности не уловил)
ладно, добавил в конец
$self->Refresh();
$self->Update();
стало довольно забавно - прорисовывается _предыдущая_ картинка(то есть та, которая была задана прошлым вызовом )
но, если на место, где должна быть картинка, перекрыть другим окном, а потом его убрать - то всё видно.
если добавить рефреш/апдейт _ещё раз_ - тогда отображается нормально, но окошко мигает.
Вопрос - что я делаю не так и можно ли это разрулить как-нибудь более элегантно?
И вторая проблема - в пнг-файле есть прозрачные участки, но прозрачность тоже работает только под линуксом
в виндах там получается чёрный цвет.
странная прорисовка битмапов под windows
-
- Super wx Problem Solver
- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Re: странная прорисовка битмапов под windows
смотря куда ты этот код засунул... в EVT_PAINT?
http://wiki.wxwidgets.org/Drawing_on_a_panel_with_a_DC
http://wiki.wxwidgets.org/Drawing_on_a_panel_with_a_DC
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
Re: странная прорисовка битмапов под windows
Этот код в EVT_BUTTONborr_1 wrote:смотря куда ты этот код засунул... в EVT_PAINT?
В смысле надо завести реакцию на EVT_PAINT и обновление окна засунуть туда?
-
- Super wx Problem Solver
- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Re: странная прорисовка битмапов под windows
ну да, прямо как в инструкции.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse