Hi, I'm doing a graphical inside a window, but when I move the window out the 
borders or when I put another window over the first, the image is cutted.
I attach the module and I am sure that there is  an easy solution.
Thanks,

package Mailtool::calculc;


use Mailtool::msg;
use Mailtool::accesweb;
use Mailtool::seleccio;
use Win32::GUI;

use Mailtool::loginUOC;

# =====================
# FINESTRES
# =====================

    $w_calculcon = Win32::GUI::Window->new (
 -top  => 0,
 -left  => 0,
 -maxsize => [800,600], 
 -width  => 800, 
 -height  => 600, 
 -text  => "Resultats Tutor", 
 -name  => "Mailtool::calculcon::e_w_calculcon",);

# =====================
#       FONTS
# =====================

 $fo_normal = Win32::GUI::Font->new (
      -size     => 16, 
      -bold     => 0,);

  $fo_negreta = Win32::GUI::Font->new (
      -size     => 16, 
      -bold     => 1,);

  $fo_cursiva = Win32::GUI::Font->new (
       -size     => 14, 
      -bold     => 1, 
  -italic => 1,);

 $fo_petita = Win32::GUI::Font->new (
      -size     => 11, 
      -bold     => 0,);
  



# ===================
# PENS
# ===================

 my $verd  = new Win32::GUI::Pen(
            -color => 65280 
        );

 my $blau = new Win32::GUI::Pen(
   -color => 16711680
  );
 
 my $groc = new Win32::GUI::Pen(
   -color => 0x0000FF
  ); 
  




# =====================
# CRIDES EXTERNES
# =====================

# -------------------------------------
  sub prepara {
# -------------------------------------

 $w_calculcon->Show();
 
 # $Screen = new Win32::GUI::DC("DISPLAY");
 
  $Screen = $w_calculcon->GetDC;
}


# -------------------------------------
  sub visualitza {
# -------------------------------------

 $refdata = shift(@_);
    $nbusties=shift(@_);
 $posinimin =shift(@_);
 $datamin=shift(@_);
 $posinimax =shift(@_);
 $datamax=shift(@_);
 $refbusties = shift(@_);
 $infotex = shift(@_);
 

 ##### crida:  Mailtool::calculc::visualitza([EMAIL 
PROTECTED],$busties,$posinimin,$posinimax,$refbusties);


 $diesfinestra=7;



 $Screen->Rectangle(50,50, 700,570);
 
 $alcadamax=0;
 $ii = $posinimin;
 while ($ii+$diesfinestra-1<=$posinimax)
 {
  for $jj (0..$nbusties-1)
  {
   $info[$jj][$ii-$posinimin]=0;
   for $kk (0..$diesfinestra-1)
   {
    if (exists ($refdata->[$jj][$ii+$kk]))
    {
     
$info[$jj][$ii-$posinimin]=$info[$jj][$ii-$posinimin]+$refdata->[$jj][$ii+$kk];
    }
   }
   if ($info[$jj][$ii-$posinimin]>$alcadamax)
   {
    $alcadamax=$info[$jj][$ii-$posinimin];
   }
  }
  $ii++;
 }
 

 $Screen->TextOut(35,25,$infotex);
 
 $Screen->TextOut(5,42,$alcadamax);  # el -8 es pel tamany de la font que es 16
 $Screen->TextOut(5,302,$alcadamax/2);
 $Screen->TextOut(5,562,0);
 
 $Screen->TextOut(30,580,$datamin.'+ 0..6');
 $Screen->TextOut(670,580,$datamax.'+ 0..6');
 
 
 
 $espai=648/($ii-$posinimin-1);
 

 for $ll (0..$nbusties-1)
 {
   $ypos[$ll]=570;
   
   if ($ll==0)
   {
    $Screen->SelectObject($blau);
   }
   if ($ll==1)
   {
    $Screen->SelectObject($verd);
   }
   if ($ll==2)
   {
    $Screen->SelectObject($groc);
   }
   
   $Screen->MoveTo(705,80+$ll*60);
   $Screen->LineTo(780,80+$ll*60);
   $Screen->SelectObject($fo_petita);
   $Screen->TextOut(705,80+$ll*60+10,$refbusties->[$ll]->{Nom});
   
   
 }
 
 
 for $i (0..$ii-$posinimin-1)
 {
 
  $xpos = 50 +$espai*$i;
  
  for $ll (0..$nbusties-1)
  {
   if ($ll==0)
   {
    $Screen->SelectObject($blau);
   }
   if ($ll==1)
   {
    $Screen->SelectObject($verd);
   }
   if ($ll==2)
   {
    $Screen->SelectObject($groc);
   }
   
   $yposvell[$ll]=$ypos[$ll];
   $ypos[$ll]=569-520*$info[$ll][$i]/$alcadamax;
   print " y: $ypos[$ll] \n";
   if ($i>0)
   {
    $Screen->MoveTo($xpos-$espai,$yposvell[$ll]);
    $Screen->LineTo($xpos,$ypos[$ll]);
   }
  }
 }
 
 Win32::GUI::Dialog();
  
}





#sub w_calculcon_Resize {
# print "holllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaa \n";
#  
visualitza($refdata,$nbusties,$posinimin,$datamin,$posinimax,$datamax,$refbusties,$infotex);
#}

1;

Reply via email to