Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wxPerl, Отрисовка примитивов во фрейме 
:(
    Опции темы
demetrius2003
Дата 16.2.2012, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.10.2010

Репутация: нет
Всего: нет



Доброго дня всем участникам форума!
Потихоньку осваиваю Перл (под win32 - использую Strawberry perl 5.12.3.0). Тут понадобилось из скрипта отобразить чуток графики. Поискал информацию - нашёл wxPerl. В общем решил пощупать, что за зверь такой. Информации по сабжу на русском маловато. Осваивание начал методом научного тыка. Что сделал:
1 ppm install http://www.wxperl.co.uk/repository/Alien-wxWidgets.ppd
2 ppm install http://www.wxperl.co.uk/repository/Wx.ppd
3 cpan wxPerl::Constructors
После этого хоть что-то заработало! Без проблем запускаются примеры с форумов и мануалов. К примеру - этот:
Код

#!perl
use Wx;

# First, define an application object class to encapsulate the application itself
package HelloWorld;
use base 'Wx::App';

# We must override OnInit to build the window
sub OnInit
{
    my $self = shift;

    my $frame = Wx::Frame->new(undef,           # no parent window
                               -1,              # no window id
                               'Hello, World!', # Window title
                               [-1, -1],        # Position
                               [-1, -1],        # Size
                              );

    my $panel = Wx::Panel->new($frame);

    my $label = Wx::StaticText->new($panel,   # Parent window
                                    -1,       # no window id
                                    'Welcome to the world of WxPerl!',
                                    [20, 20], # Position
                                   );

    $frame->Show(1);
    return 1;
}

# Create the application object, and pass control to it.
package main;
my $app = HelloWorld->new;
$app->MainLoop;

В самом тексте программы мне пока не всё понятно. Но это дело наживное. Собственно самое главное - насколько объектная модель wxPerl совпадает с моделью wxWidgets? Т. е., грубо говоря, могу ли я использовать примеры и описания wxWidgets при работе с wxPerl? В данный момент мне нужно вместо строки Welcome to the world of WxPerl!' отобразить некоторые графические примитивы - линии, прямоугольники, дуги. Возможно ли это? Или это лучше сделать как-то по другому? В общем тут у меня затык. Не могу двинуться далее.
PM MAIL   Вверх
shamber
Дата 17.2.2012, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



demetrius2003
WxPerl::Demo посмотрите, там много хорошего,доброго вечного....
PM MAIL Jabber   Вверх
demetrius2003
Дата 17.2.2012, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.10.2010

Репутация: нет
Всего: нет



Что-то непонятно. Попробовал:
ppm install http://www.wxperl.co.uk/repository/Wx-Demo.ppd
Получил ошибку, но папочка создалась. В основном в примерах, модулях и документации упор делается на контролы - кнопки, полосы прокрутки и почую муть. Что-то я видимо не там ищу. Примитивы ни разу не встретил smile 
PM MAIL   Вверх
shamber
Дата 17.2.2012, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



плохо искали, wxPrinting.pm wxOverlay.pm смотрите там....
Код

sub OnDraw {
  my $this = shift;
  my $dc = shift;
#  my $font = Wx::Font->new( 20, wxSCRIPT, wxSLANT, wxBOLD );

#  $dc->SetFont( $font );
  $dc->DrawRotatedText( "Draw Here", 200, 200, 35 );

  $dc->DrawEllipse( 20, 20, 50, 50 );
  $dc->DrawEllipse( 20, $y_size - 50 - 20, 50, 50 );
  $dc->DrawEllipse( $x_size - 50 - 20, 20, 50, 50 );
  $dc->DrawEllipse( $x_size - 50 - 20, $y_size - 50 - 20, 50, 50 );

  $dc->SetPen( Wx::Pen->new( wxRED, 5, wxSOLID ) );
  # wxGTK does not like DrawLines in this context
  foreach my $i ( @{$this->{LINES}} ) {
    my $prev;

    foreach my $j ( @$i ) {
      if( $j != ${$i}[0] ) {
        $dc->DrawLine( @$prev, @$j );
#       $dc->DrawLines( $i );
      }
      $prev = $j;
    }
  }
}

sub OnMouseMove {
  my( $this, $event ) = @_;

  return unless $event->Dragging;

  my $dc = Wx::ClientDC->new( $this );
  $this->PrepareDC( $dc );
  my $pos = $event->GetLogicalPosition( $dc );
  my( $x, $y ) = ( $pos->x, $pos->y );

  push @{$this->{CURRENT_LINE}}, [ $x, $y ];
  my $elems = @{$this->{CURRENT_LINE}};

  $dc->SetPen( Wx::Pen->new( wxRED, 5, wxSOLID ) );
  $dc->DrawLine( @{$this->{CURRENT_LINE}[$elems-2]},
                 @{$this->{CURRENT_LINE}[$elems-1]} );

}



Это сообщение отредактировал(а) shamber - 17.2.2012, 23:05
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: GUI | Следующая тема »


 




[ Время генерации скрипта: 0.1105 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.