java画图直线和圆形矩形_课内资源 - 基于java2D的画图程序(矩形、椭圆、直线)...

摘 要

本程序主要运用java2D提供的强大画图功能,来画直线、椭圆、矩形。首先,是在工具栏中选择要绘制的图形,然后通过鼠标的拖拽来完成图形的绘制。

1 实现绘图面板

在绘图面板中要实现两个功能,一是跟踪鼠标事件,另一个是覆盖paint方法绘制图形。

鼠标的跟踪通过MouseListener接口来实现,在本绘图程序中,要实现其中的mousePressed和mouseReleased方法,即在开始单击鼠标左键(mousePressed)时,设置绘制图形的起始点,起始点的位置由MouseEvent类的getX和getY方法分别得到。在释放鼠标(mouseReleased)时,设置所绘制图形的终点,终点的位置也由getX和getY方法得到,同时利用两个点的位置信息绘制屏幕。代码如下:

publicvoidmouseReleased(MouseEvente)

{

point[1]=newPoint(e.getX(),e.getY());

publicvoidmouseReleased(MouseEvente)

{

point[1]=newPoint(e.getX(),e.getY());

repaint();

Paint方法描述了组件的绘制方法,通过覆盖该方法,可绘制各种需要的图形。在本程序中,通过一个swith-case结构来设置绘制图形的类型。Shape参数来自于工具栏,通过drawShape方法传入,shape为0、1、2时画线、画圆、画矩形,它们分别通过Graphics类的drawLine、drawOval、drawRect方法完成。这部分的主要代码如下:

switch(shape){

case0:

g.drawLine(point[0].x,point[0].y,point[1].x,point[1].y);

break;

case1:

intwidth=point[1].x-point[0].x;

intheight=point[1].y-point[0].y;

g.drawOval(point[0].x,point[0].y,width,height);

break;

case2:

width=point[1].x-point[0].x;

height=point[1].y-point[0].y;

g.drawRect(point[0].x,point[0].y,width,height);

break;

}

2 演示程序

在用户界面上方设置了一个工具栏,包含3个按钮,这3个按钮组成按钮组,某时刻只能一个按钮被有选中。

在按钮的事件处理中,调用ActionEvent类的getSource方法得到事件源,将它与3个按钮进行比较,可得到事件来自于哪个按钮,并将这个参数通过PainterPanel类的drawShape方法传递到PainterPanel实例中,这样在发生鼠标拖拽时,就能根据shape的值来确定应该绘制哪种图形。主要代码如下:

for(inti=0;i

if(e.getSource()==button[i]){

painter.drawShape(i);

}

}

本程序的运行效果如下图:

27a8cb739a1eb06fc3661684bb4cff50.png

参考文献

[1] DonaldHearn, M. Pauline Baker. Computer Graphics C Version, 2nd Edition, 清华大学出版社,

[2] AlanWatt. 3D Computer Graphics, 2nd Edition. Addison-Wesley

[3] 唐荣锡, 汪嘉业, 彭群生等. 计算机图形学教程. 科学出版社

[4] 唐泽圣, 周嘉玉, 李新友. 计算机图形学基础. 清华大学出版社

[5] 石教英, 蔡文立. 科学计算可视化算法与系统. 科学出版社

[6] DonaldHearn, M. Pauline Baker. Computer Graphics C Version, 2nd Edition, 清华大学出版社

[7] Alan Watt.3D Computer Graphics, 2nd Edition. Addison-Wesley

[8] 计算机图形学基础教程,清华大学出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值