perl学习笔记18 z

52 篇文章 0 订阅

图形化与Tk

1.  GD模块:创建简单的几何图形

#! c:/perl/bin/perl

# fig21_01.pl

 

use GD;

use warnings;

use strict;

 

 

my $image = new GD::Image(320,320); #创建一个GD图像对象。并且传入需要建图象的宽度和高度值(单位象素点)

#X坐标值沿图像从左向右增加;Y坐标值沿图像从顶向下增加。

 

#-----------定义颜色------------------------------

my $white = $image -> colorAllocate (255,255,255);             #colorAllocate方法的传入参数为redgreenblue的值,

my $red = $image -> colorAllocate (255,0,0);                       #然后对三种颜色进行调和得到需要的颜色。

my $greed = $image -> colorAllocate (0,255,0);                   #GD模块使用RGB颜色规则,规则中红、绿、兰部分都用了                 

my $blue = $image -> colorAllocate (0,0,255);                     #0~255中的一个整数值表示。通过每个数值变化对颜色进。

my $black = $image -> colorAllocate (0,0,0);                       #行调和,得到需要的颜色,如同调色板。

my $purple = $image -> colorAllocate (255,0,255);

 

 

#----------定义图形------------------------------

$image -> filledRectangle (15,15,150,150,$red);                   #创建预定义的多边形。前两个参数定义矩形的一个角坐标,

#第三和第四参数定义了沿对角线的另一个角坐标值。

                                                                                    #第五个参数为颜色参数。

$image -> arc (200,200,50,50,0,360,$black);                         #arc方法建立一个圆。前两个参数为中心坐标,后面两个为圆的水平半径和垂直半径。再后面的维圆弧的角度边界。最后一个是颜色参数。                                       #注意:arc并不填充颜色,fill方法进行颜色填充。

$image -> fill (200,200,$blue);                                             #前两个参数定义一个像素点,绘制的时候从该点向外进行,直到找到一个与起始像素有不同颜色值的像素为止。

$image -> rectangle (100,100,200,125,$green);                    #创建空的矩形,不填充颜色,使用下面的fillToBorder填充。

$image -> fillToBorder (150,110,$green,$green);                  #这个方法可以用于边界参数范围内的填充。参数与fill方法基本相同,只是在颜色的前面增加了一个边界颜色的参数。

 

 

#---------Polygon-----------------------------

my $polygon = new GD::Polygon();                        #建立一个polygon类的实例。

$polygon = addPt(20,300);                                      #确定多边形的3个点。

$polygon = addPt(20,175);

$polygon = addPt(100,175);

 

$image -> polygon ($polygon, $blue);                            #使用多边形对象和边界颜色将多边形加入图像中

$image -> fill(50.200,$purple);                               #向多边形填充颜色。

 

$polygon = setPt(0,30,300);                                           #setPt方法的第一个参数是需要改变点的数量,程序中必须将

$polygon = setPt(1,110,300);                                         #这个值的初值设置为0。最后两个参数是新点的x,y坐标。

$polygon = setPt(2,110,300);

 

$image -> filledPolygon($polygon,$black);                    #使用filledPolygon方法填充多边形的颜色。

 

#---------文件输出------------------------------

open (PICT,">fig21_02.png") or

       die ("Can not open picture:$!");

      

binmode (PICT);                                            #将输出模式设定为二进制模式,二进制模式中的图像存储时,包含这个图像的内存字节按图像本身的格式写入,而不是按开发平台的特定格式。

print (PICT $image ->png() );                         #png方法将图像转化成一个png格式的文件。

close (PICT) or die ("Can not close file: $!);

 

 

 

2.  chart模块

perl提供了一个用于创建定制图表的模块,模块的名字叫做Chart。它的扩展模块包括Chart::Lines(折线图)、Chart::Bars(棒图或直方图)以及Chart::Points(点图)等等。

 

#!c:/perl/perl.exe

#fig21_05.pl

#using the Chart module

 

use strict;

use warnings;

use Chart::Lines;  #引入模块Chart::Lines来产生折线图

 

my $line = new Chart::Lines();

#创建一个折线图对象

my $file = "fig21_05.png";

#$file容纳输出文件的名字

my @lables = ("first","second");    

#容纳数据集的名称

my %colors = ("dataset0" => [100,100,255],               

                      "dataset1" => [255,100,100],                

                      "background" => [150,235,200]);

#将图表的一个区域映射成有3RGB颜色值确定的一种颜色。

#如此操作是为了更容易进行修改

 

$line -> set ( "title" => "Test Chart", "x_label" => "letter");  

#set方法要求接收采用“键-值”对的形式,其中键表示想要设置什么,而“值”对应于那个键指定的新值

#这一行是改变图表的标题和X标签

$line -> set ( "y_label" => "number", "legend" => "left");

#这行改变图表Y的标签和图例放置的位置

$line -> set ( "legend_labels" => /@labels, "colors" => /%colors );

#这行将图例标签放入@labels数组中,同时也将颜色放入%colors

$line -> set ( "grey_background" => 0 );

#这一行是为了使图形的背景色不是暗灰色

 

my @Xlabels = ( 'a', 'b', 'c', 'd' );

#定义x轴上的标签值

my @dataset1 = ( 1,2,3,4 );

#定义数据

my @dataset2 = ( 2,3,5,9 );

#定义数据

 

 

 

3.  TK概述

u       Tk应用在事件句柄循环里,事件句柄循环用来截取发生的用户交互(或事件)。事件可以是鼠标的点击、键盘击键或者任何其它可能发生的事件。事件发生时,事件句柄循环就能接收这一事件,然后“唤醒”可以用来处理这个事件的函数。

u       一个基本Perl/Tk程序的第一步就是创建一个主窗口。主窗口用下面的语句创建:

$main = new MainWindowt();

u       这个语句调用TkMainWindow构建函数来创建一个新的窗口,然后用变量$main引用一个MainWindow对象。

u       创建GUI组件时需要配置这些组件,即指定他们的类型、在何处放置等。并在程序段的最后将GUI组件置于窗口中,如果不这样做,组件就不会显示出来。

u       生成了窗口及GUI组件,并将组件显示到窗口之后,就该执行最后一步,即开始处理窗口事件。函数调用MainLoop();可打开所有的主窗口,以使用户与之交流。函数MainLoop应该是程序的最后一个语句,这是为了保证在窗口显示之前,主窗口和主窗口内的组件得到配置,否则,这些组件不会在窗口中正确显示。

u       TkLabel方法可以创建一个标签组件。

u       TkButton方法可以创建一个按钮组件。

u       回调是规定了事件响应中需要执行行动的函数。

u       Tkpack方法可以将组件放置到窗口合适的位置处。缺省行动是将第一个组件置于窗口顶部,第二个组件位于它的下方,一次类推。

u       TkListBox方法可创建一个列表组件。

u       TKTopLevel方法可以创建一个新的的顶级窗口

u       Tkbind方法用GUI组件事件连接回调函数。

u       TkTadiobutton方法可创建一个单选按钮组件。

u       TkScale方法创建一个标尺组件,标尺组件有许多用户化的属性,例如标尺的范围,标尺上标点的距离以及窗口中标尺的长度。

u       TkFrame方法创建一个框架组件,这个GUI组件不仅可以包含其它组件,而且还能获得对其它组件布局的更多控制权。


<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值