# IUP::Canvas example # # Basic 2D drawing example use strict; use warnings; use IUP ':all'; my $cv = IUP::Canvas->new( SIZE=>"300x100", XMIN=>0, XMAX=>99, POSX=>0, DX=>10 ); my $draw = 0; $cv->ACTION( sub { my ($self, $sx, $sy) = @_; $self->cdActivate(); $self->cdClear(); $self->cdForeground(CD_BLUE); $self->cdBox(0, 100, 0, 100); $self->cdForeground(CD_RED); $self->cdLine( 0,0,500,500); $self->cdLine(10,0,510,500); $self->cdLine(20,0,520,500); $self->cdLine(30,0,530,500); $self->cdForeground(CD_BLACK); $self->cdLineStyle(CD_DOTTED); $self->cdArc(100,100,150,80,0,360); return IUP_DEFAULT; } ); $cv->BUTTON_CB( sub { my ($self, $but, $press, $x, $y) = @_; if ($but == IUP_BUTTON1 && $press == 1) { $y = $self->cdUpdateYAxis($y); $self->cdPixel($x, $y, CD_BLUE); $draw = 1; } else { $self->cdClear(); $draw = 0; } return IUP_DEFAULT; } ); $cv->MOTION_CB( sub { my ($self, $x, $y, $r) = @_; if ($draw) { $y = $self->cdUpdateYAxis($y); $self->cdPixel($x, $y, CD_BLUE); } return IUP_DEFAULT; } ); my $dg = IUP::Dialog->new( child=>IUP::Vbox->new($cv), TITLE=>"IUP::Canvas + Canvas Draw", MARGIN=>"10x10" ); $dg->ShowXY(IUP_CENTER, IUP_CENTER); IUP->MainLoop;