第一讲Java画图机制

合集下载

java画图应用程序

java画图应用程序

画图应用程序(JAVA)摘要Java语言已经成为了编程语言的骄子。

Java是一种简单的、面向对象的、分布式的、解释型的、健壮安全的、结构中立的、可移植的、性能优异、多线程的动态语言,非常实用。

我们可以看到,越来越多的大学在教授数据结构、程序设计和算法分析等课程时,渐渐的转向以Java语言为载体。

Java语言成为一种潮流,其跨平台开发和应用的优越性,使其在网络上被广泛的应用和开发。

学习利用Java编程也是比较实用的,其拥有很方便的图形界面等功能。

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。

学习了一学期的《Java面向对象编程》课程,利用我们所学的GUI图形用户界面等,来编写一个简单的画图应用程序。

实现一些比较简单的画图应用;如:画直线、曲线、矩形、椭圆、选择颜色、打开保存等基本功能。

关键字:Java ,画图,课程设计,编程1、画图应用程序需求分析需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。

可以说在软件工程当中的“需求分析”就是确定要计算机做什么。

利用Java语言编写一个简单的画图应用程序。

1.1、Java实现画图应用程序学习了《Java面向对象编程》的课程,为了更进一步的提高我们对Java的深入学习,进行了一周的课程设计,我所选择课程设计是利用Java的GUI实现画图应用程度。

其目的是通过本课程设计使我们能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。

1.2、画图应用程序的综合要求(1)程序功能需求2)可绘制直线、曲线、椭圆、矩形;3)可改变线条颜色;4)可完成图形文件的保存、打开功能。

(2)程序性能需求1)计算机硬件要求:P4以上微机。

java初级制图(画图)

java初级制图(画图)

初级制图 -画图ー1. 终端Java 的life cycle从本讲开始我们就要学习终端Java 技术了! 终于开始学了啊。

目前为止已经学习的编程基础一定会派上用场的,尼克要加油啊。

本讲我们学习在终端上制作图画。

在文章开始时谈到画图,那么首先从如何启动终端Java ,如何使其运行开始讲起。

这么说有电话挂进来时,程序会暂时停止是么?是这样的。

每次电话进来时程序都会中止,相反若程序仍然运行不是很麻烦么。

通话时游戏结束的话很讨厌啊。

为了避免这种情况,在终端Java 内定义了程序启动时、电话挂进来时以及程序结束时的处理。

好方便啊。

请看下图。

终端Java 的life cycle 如下图所示。

1.终端发出运行命令,调出default constructor (无自变量)。

2.调出startApp(),开始MIDlet 。

3.电话等进来时,运行pasuseApp(),MIDlet 停止。

4.通话结束时,再运行startApp(),且再次打开MIDlet 。

5.停止MIDlet 时,运行destroyApp(),MIDlet 停止。

import javax.microedition.lcdui.Display; 1import javax.microedition.lcdui.TextBox; 2import javax.microedition.midlet.MIDlet; 3import javax.microedition.midlet.MIDletStateChangeException; 45/** 6* 程序模板 7*/ 8public class Template extends MIDlet { 910private Display display; 11private TextBox textbox;1213public Template() { 14display = Display.getDisplay(this); 15博士,这里的default constructor 是什么?这个呀。

Java的Graphics类进行绘图的方法详解

Java的Graphics类进行绘图的方法详解

Java的Graphics类进⾏绘图的⽅法详解Graphics类提供基本绘图⽅法,Graphics2D类提供更强⼤的绘图能⼒。

Graphics类提供基本的⼏何图形绘制⽅法,主要有:画线段、画矩形、画圆、画带颜⾊的图形、画椭圆、画圆弧、画多边形等。

1. 画线在窗⼝画⼀条线段,可以使⽤Graphics类的drawLine()⽅法:drawLine(int x1,int y1,int x2,int y2) 例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,100)处画⼀个点。

g.drawLine(3,3,50,50);//画⼀条线段g.drawLine(100,100,100,100);//画⼀个点。

2. 画矩形有两种矩形:普通型和圆⾓型。

(1) 画普通矩形有两个⽅法:drawRect(int x,int y,int width,int height):画线框围起来的矩形。

其中参数x和y指定左上⾓的位置,参数width和height是矩形的宽和⾼。

fillRect(int x,int y,int width,int height):是⽤预定的颜⾊填充⼀个矩形,得到⼀个着⾊的矩形块。

以下代码是画矩形的例⼦:g.drawRect(80,100,40,25);//画线框g.setColor(Color.yellow);g.fillRect(20,70,20,30);//画着⾊块(2)画圆⾓矩形也有两个⽅法:drawRoundRect(int x,int y,int width, int height, int arcWidth, int arcHeight):是⽤线围起来的圆⾓矩形。

其中参数x和y指定矩形左上⾓的位置;参数width和heigth是矩形的宽和⾼;arcWidth和arcHeight分别是圆⾓弧的横向直径和圆⾓弧的纵向直径。

fillRoundRect(int x,int y,int width,int height,int arcWidth,int archeight):是⽤预定的颜⾊填充的圆⾓矩形。

Java程序设计——12图形绘制

Java程序设计——12图形绘制

unitsImage
绘制图像-2
• drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
– 将img中的一个矩形区域绘制到当前画布的一个矩形区域,且可拉伸。 – 透明的部分不绘制(gif图片可以指定一个透明色),用于绘制不规则图像。
赵志崑
输出文字
• 将字符串输出到特定位置:
– void drawString(String str, int x, int y)
(x,y) 见TextExample.java g.drawString("Hello World!",50,50); g.drawString("世界你好!",50,100);
150
赵志崑
设置颜色
• void setColor(Color c):将当前画笔颜色设置为c。 • Color getColor():读取当前画笔颜色。 • 颜色的构造: – 构造函数Color(int r, int g, int b):参数为红、绿、蓝的值(0-255)。 – 直接使用Color类中的静态对象:如Color.blue, Color.yellow, Color.orange, ……
– style:字体形式,为Font.PLAIN,Font.BOLD,Font.ITALIC。 – size:字体的高度,单位为像素。
• 这些设置字体的方法同样可以应用于组件上显示的字体。
见FontExample.java public void paintComponent(Graphics g) { super.paintComponent(g); g.setFont(new Font(fontName,fontStyle,fontSize)); g.drawString("Hello World!",50,50); g.drawString("世界你好!",50,100); }

Java标准教程:Java 2D绘图--第1章 Java 2d API概念概述

Java标准教程:Java 2D绘图--第1章 Java 2d API概念概述

Java标准教程:Java 2D绘图--第1章Java 2d API概念概述Java 2D API通过扩展抽象窗口工具箱(AWT),为Java程序提供了二维图像,文本和图形的功能。

这个复杂的渲染包支持线形图像,文本和图形,为富用户界面,复杂绘图程序和图像处理器开发者提供灵活的,功能强大的框架。

Java 2D对象出现在一个平面中,称为用户坐标系空间,和设备坐标系空间。

当对象在屏幕或打印机中渲染时,用户空间坐标系被转换成设备空间坐标系。

以下链接可以在开始学习Java 2D API时是很有用的:●Graphics●Graphics2DJava 2D API提供了以下功能:●为设备和打印机展示统一的渲染模型。

●大量基本集合图形,例如曲线,矩形,椭圆,以及渲染任何集合图形的渲染技术。

●在图形,文本和图像中执行撞击检测。

●一个复杂的模型,提供了控制如何渲染重叠对象。

●增强型的颜色支持。

●使用渲染提示控制渲染的质量。

这些主题在以下章节中进行介绍:●Java 2D 渲染●基本集合图形●文本●图像●打印1.1 坐标系Java 2D API维护两个坐标系空间。

●用户空间:指定基本图形的空间。

●输出设备的坐标系,例如屏幕,窗口或打印机。

用户空间是独立于设备的逻辑坐标系,坐标系空间是您的应用程序使用的。

所有传递到Java 2D渲染流程中的几何图形都使用用户空间坐标系指定。

当使用从用户空间到设备空间的转换时,原有的用户空间是组件绘制空间的左上角。

X轴向右增加,y轴向下增加,和下图中展示的一致。

窗体的左上角时(0, 0)。

所有的坐标系都是用整数表示,通常是足够的。

然而一些情况下需要浮点甚至double精度的坐标,也是支持的。

1.2 Java 2D渲染Java 2D API为不同类型的设备提供了统一的渲染模型。

在应用程序级别,不管设备是屏幕还是打印机,渲染流程是一样的。

当组件需要展示时,它的paint 或update方法会在合适的Graphics是上下文中被自动调用。

java入门教程(一)PPT课件

java入门教程(一)PPT课件

运算符与控制流语句
运算符
Java支持多种运算符,如算术运算符(+、-、*、/、% )、关系运算符(==、!=、>、<、>=、<=)和逻辑 运算符(&&、||、!)等。
控制流语句
Java提供了多种控制流语句,如if语句、switch语句和 循环语句(for、while、do-while)等,用于控制程序 的执行流程。
1995年,Java正式发布,并成为一种独立的开发 平台。
2004年,Java SE 5.0版发布,引入了新特性如泛 型、for-each循环和自动装箱等。
java的应用领域
Web应用程序 开发
Java的Web开发技术, 如Servlet和JSP等,可 以轻松构建高效的Web 应用程序。
企业级应用
05
java开发环境配置
jdk的安装与配置
总结词
JDK是Java开发的核心工具包,需要安装并正确配置。
详细描述
JDK是Java Development Kit的缩写,是Java开发的核 心工具包,需要从Oracle官方网站下载并安装。在安装 过程中,需要选择适合自己系统的版本,并按照提示完 成安装过程。安装完成后,需要通过环境变量设置,将 JDK添加到系统路径中,以便在命令行或者其他IDE中直 接调用Java命令。
2023
java入门教程(一)ppt课件
目录
• java概述 • java基础知识 • java核心技术 • java常用类库 • java开发环境配置 • java入门案例——简易学生信息管理系统的实现
01
java概述
java的定义与特点
1
于开发跨平台应用程序和服务端应用程序等。

跟我学Java入门到精通培训教程——Java 2D高级绘图技术及应用实例(第1部分)

1.1跟我学Java入门到精通培训教程——Java 2D高级绘图技术及应用实例(第1部分)1.1.1Java 2D高级绘图技术1、Java 2D的增强功能(1)相关的应用技术概述由Sun公司与Adobe系统公司合作推出的Java 2D API,提供了一个功能强大而且非常灵活的二维图形框架。

Java 2D API扩展了java.awt包中定义的Graphics类和Image类,提供了高性能的二维图形、图像和文字,同时又维持了对现有AWT应用的兼容。

(2) AWT的图形能力的不足:在 AWT 的初始实现中,图形能力并不十分完善。

因为开发 JDK 是打算将其作为平台中立的实现平台,所以其原始的功能被限制于“最少公共功能”上,所有被支持的操作系统上保证提供这些公共功能;在 Java 2D 出现之前,对绘制能力、字体操作和图像控制的支持非常少。

而对诸如用图案进行着色、形状操作以及图形变换之类的重要操作的支持则完全没有。

Java 2D 满足了跨平台实现中对这些功能以及其它功能的需求。

(3)Java 2D API:它是JFC (Java Fundation Classes)的一员,加强了传统AWT(Abstract Windowing Toolkit )的描绘功能。

在JDK1.2中已经支援Java 2D 的使用。

透过Java 2D API ,程序员可以轻松地描绘出任意的几何图形、运用不同的填色效果、对图形做旋转(rotate)、缩放(scale)、扭曲(shear)等。

如图所示,程序员透过2D API所提供的功能,简单地利用不同类型的线或是填色效果绘出统计图,以区分出不同的资料。

它们是基于Graphics2D类的绘图功能,是对AWT中的Graphics类的进一步的扩展和增强。

主要体现在:1)对渲染质量的控制:消除锯齿以平滑绘制对象的边缘2)裁剪、合成和透明度:它们允许使用任意形状来限定绘制操作的边界。

它们还提供对图形进行分层以及控制透明度和不透明度的能力。

JAVA画图板实现(基本画图功能+界面UI)二、功能实现及重绘实现

JAVA画图板实现(基本画图功能+界⾯UI)⼆、功能实现及重绘实现上篇博客中介绍了界⾯的实现⽅法,在这篇博客中将对每个按钮的功能的实现进⾏讲解并介绍重绘⾸先肯定要添加事件监听机制了,那么问题来了,事件源对象是谁?需要添加什么⽅法?事件接⼝是什么?1、我们需要点击按钮,获取按钮上的⽂字信息,颜⾊信息,粗细信息。

那么,此时事件源对象就是按钮,监听⽅法就是addActionListener(ActionListener e),事件接⼝就是ActionListener2、要根据在窗体上按下和释放的位置画⼀个图形,此时事件源对象就是窗体,监听⽅法就是addMouseListener(MouseListener e),事件接⼝就是MouseListener1public class DrawListener extends MouseAdapter implements ActionListener {23private Color color = Color.black;// 声明颜⾊属性,存储⽤户选择的颜⾊4private int width = 1;// 声明粗细属性,存储⽤户选择的粗细5private String type = "Line";// 声明图形属性,存储⽤户选择的图形6private int x1, y1, x2, y2, x3 = 0, y3 = 0, x4 = 0, y4 = 0, x5, y5;// 声明坐标值属性,存储⿏标按下和释放的坐标值7private Graphics2D g;// 声明画笔类属性,组件是画出来的,现在要在组件上画图形,Graphics从组件上获取8private DrawMain dm;// 声明画图程序窗体组件属性9private JTextField text;// 获取⽂本框内容10private double H = 100;// 等腰三⾓形的⾼度11private int num = 0;12private List<Shape> list;13private ImageIcon i = new ImageIcon("C:\\Users\\long452a\\Desktop\\a1.jpg");1415/**16 * 构造⽅法17 *18 * @param dm画图程序的窗体组件对象19*/20public DrawListener(DrawMain dm, JTextField text, List<Shape> list) {21this.dm = dm;22this.text = text;23this.list = list;24 }2526/**27 * 点击按钮时执⾏的事件处理⽅法28 *29 * @param e对象中存储了事件源对象的信息和动作信息30*/31public void actionPerformed(ActionEvent e) {32 }3334/**35 * Invoked when the mouse button has been clicked (pressed and released) on a36 * component.37*/38public void mouseClicked(MouseEvent e) {39 }4041/**42 * Invoked when a mouse button has been pressed on a component.43*/44public void mousePressed(MouseEvent e) {45 }4647/**48 * Invoked when a mouse button has been released on a component.49*/50public void mouseReleased(MouseEvent e) {51 }5253public void mouseDragged(MouseEvent e) {54 }55 }这样我们的类就建好了,下⾯就该写⾥⾯的⽅法了1/**2 * 点击按钮时执⾏的事件处理⽅法3 *4 * @param e对象中存储了事件源对象的信息和动作信息5*/6public void actionPerformed(ActionEvent e) {7 String text = e.getActionCommand();8if (text.equals("")) {9 JButton button = (JButton) e.getSource();10 color = button.getBackground();11 } else if (text.equals("1") || text.equals("3") || text.equals("5")) {12 width = Integer.parseInt(text);13 } else {14 type = text;15 }16// System.out.println(color + ">>" + width + ">>" + type);17 }1819/**20 * Invoked when the mouse button has been clicked (pressed and released) on a21 * component.22*/23public void mouseClicked(MouseEvent e) {24 x4 = x2;25 y4 = y2;26 }2728/**29 * Invoked when a mouse button has been pressed on a component.30*/31public void mousePressed(MouseEvent e) {32 x1 = e.getX() + 7;33 y1 = e.getY() + 183;34if (y1 < 183)35 y1 = 183;36 g = (Graphics2D) dm.getGraphics();// 从窗体上获取画笔对象37 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 设置画笔抗锯齿38 g.setColor(color);// 设置画笔颜⾊39 g.setStroke(new BasicStroke(width));// 设置画笔线条粗细4041 }4243/**44 * Invoked when a mouse button has been released on a component.45*/46public void mouseReleased(MouseEvent e) {47 x2 = e.getX() + 7;48 y2 = e.getY() + 183;49if (y2 < 183)50 y2 = 183;51if (type.equals("iso_Tri")) {52if (x1 == x2) {53 g.drawLine(x1, y1, x2, y2);54 g.drawLine(x1, y1, x1 + (int) H, (y2 + y1) / 2);55 g.drawLine(x2, y2, x1 + (int) H, (y2 + y1) / 2);56 list.add(new Shape(x1, y1, x2, y2, width, color, type, i, dm, text));57 list.add(new Shape(x1, y1, x1 + (int) H, (y2 + y1) / 2, width, color, type, i, dm, text));58 list.add(new Shape(x2, y2, x1 + (int) H, (y2 + y1) / 2, width, color, type, i, dm, text));59 } else if (y1 == y2) {60 g.drawLine(x1, y1, x2, y2);61 g.drawLine(x1, y1, (x1 + x2) / 2, y1 + (int) H);62 g.drawLine(x2, y2, (x1 + x2) / 2, y1 + (int) H);63 list.add(new Shape(x1, y1, x2, y2, width, color, type, i, dm, text));64 list.add(new Shape(x1, y1, x1 + (x1 + x2) / 2, y1 + (int) H, width, color, type, i, dm, text));65 list.add(new Shape(x2, y2, x1 + (x1 + x2) / 2, y1 + (int) H, width, color, type, i, dm, text));66 } else {67double a = Math.atan((double) (x2 - x1) / (double) (y2 - y1));68double x3 = (double) (x1 + x2) / 2 + H * Math.cos(a);69double y3 = (double) (y1 + y2) / 2 - H * Math.sin(a);70 g.drawLine(x1, y1, x2, y2);71 g.drawLine(x1, y1, (int) x3, (int) y3);72 g.drawLine(x2, y2, (int) x3, (int) y3);73 list.add(new Shape(x1, y1, x2, y2, width, color, type, i, dm, text));74 list.add(new Shape(x1, y1, x1 + (int) x3, (int) y3, width, color, type, i, dm, text));75 list.add(new Shape(x2, y2, (int) x3, (int) y3, width, color, type, i, dm, text));76 }77 } else if (type.equals("Polygon")) {78if (num == 0) {79 g.drawLine(x1, y1, x2, y2);80 list.add(new Shape(x1, y1, x2, y2, width, color, type, i, dm, text));81 x5 = x2;82 y5 = y2;83 }84 num++;85if (num == 1) {86 x3 = x1;87 y3 = y1;88 }89if (x2 == x4 && y2 == y4) {90 g.drawLine(x1, y1, x3, y3);91 list.add(new Shape(x1, y1, x3, y3, width, color, type, i, dm, text));92 num = 0;93 } else {94 g.drawLine(x2, y2, x5, y5);95 list.add(new Shape(x2, y2, x5, y5, width, color, type, i, dm, text));96 x5 = x2;97 y5 = y2;98 }99 } else {100 Shape s = new Shape(x1, y1, x2, y2, width, color, type, i, dm, text);101 s.draw(g);102 list.add(s);103 }104 }105106public void mouseDragged(MouseEvent e) {107if (type.equals("Pencil")) {108 x2 = e.getX() + 7;//这⾥的+7 +183 是调出来的,能够使画的图是沿着⿏标109 y2 = e.getY() + 183;110if (y2 < 183)111 y2 = 183;112 Shape s = new Shape(x1, y1, x2, y2, width, color, type, i, dm, text);113 s.draw(g);114 list.add(s);115 x1 = x2;116 y1 = y2;117 } else if (type.equals("Erase")) {118 x2 = e.getX() + 7;119 y2 = e.getY() + 183;120if (y2 < 183)121 y2 = 183;122 Shape s = new Shape(x1, y1, x2, y2, width, Color.WHITE, type, i, dm, text);123 s.draw(g);124 list.add(s);125 x1 = x2;126 y1 = y2;127 } else if (type.equals("喷枪")) // 难点128 {129 Random rand = new Random();// 实例化⼀个随机数类的对象130int size = rand.nextInt(50);// 随机决定要画的点数131 x2 = e.getX() + 7;132 y2 = e.getY() + 183;133for (int j = 0; j < size; j++) {134// 在0-7之间可以取50次135int x = rand.nextInt(10);136int y = rand.nextInt(10);137// 不断改变(x1,y1)的坐标值,实现在(x1,y1)的周围画点138 Shape s = new Shape(x2 + x, y2 + y, x2 + x, y2 + y, width, color, type, i, dm, text); 139 s.draw(g);140 list.add(s);141 x1 = x2;142 y1 = y2;143 }144 }145 } 仔细看看代码,你也许注意到了,我在画图时创建了⼀个Shape对象,并且还把Shape对象存到了⼀个List中,为什么要这么做?你们可以去别⼈的博客上贴⼀个粗略实现的画图板代码,画⼏条直线然后再改变窗体的⼤⼩试试看,是不是画的直线不见了?那要怎么做才能使这些图形保存下来呢?这就需要⽤到重绘了。

画图课程设计java

画图课程设计java一、教学目标本课程的目标是让学生掌握Java语言基础,学会使用Java进行简单的图形界面设计。

具体目标如下:知识目标:使学生了解Java语言的基本语法、数据类型、控制结构、面向对象编程思想,以及Java图形界面设计的相关知识。

技能目标:培养学生具备使用Java编写简单图形界面程序的能力,能独立完成基本的图形界面设计任务。

情感态度价值观目标:培养学生对编程的兴趣,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。

二、教学内容本课程的教学内容主要包括Java语言基础和Java图形界面设计两部分。

Java语言基础部分包括:数据类型、控制结构、面向对象编程、异常处理、文件操作等。

Java图形界面设计部分包括:Swing组件、事件处理、布局管理、菜单栏、工具栏等。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法。

讲授法用于向学生传授Java语言基础知识和图形界面设计方法。

案例分析法用于分析实际编程中的问题和解决方案,提高学生的实际编程能力。

实验法用于让学生亲自动手实践,培养学生的实际操作能力和创新精神。

四、教学资源教材:《Java编程思想》参考书:《Java核心技术》多媒体资料:教学PPT、视频教程实验设备:计算机、网络设备教学资源的选择和准备应充分考虑教学内容和教学方法的实施,以提高学生的学习效果。

五、教学评估本课程的评估方式包括平时表现、作业、考试等。

平时表现主要评估学生在课堂上的参与程度、提问回答、小组讨论等,占总评的30%。

作业主要评估学生的编程实践能力,包括课后练习和项目任务,占总评的40%。

考试主要评估学生对Java语言基础和图形界面设计的掌握程度,占总评的30%。

评估方式应客观、公正,全面反映学生的学习成果。

六、教学安排本课程的教学进度计划共安排16周,每周2课时,共计32课时。

教学时间安排在每周的一和周三下午,地点为计算机实验室。

教学进度安排合理、紧凑,确保在有限的时间内完成教学任务。

java教程之Java绘图


(4) fillRoundRect() 调 用 格 式 为 : fillRoundRect(int x,int y,int width,int height,int arcW,int arcH) 方法作用:以(x,y)为矩形的左上角顶点,绘制一 个宽、高分别为width和height可有填充色的圆角 矩形。 方法中的参数解释如下:x,y——所绘矩形左上角坐 标 。 Width,height — — 所 绘 矩 形 的 宽 和 高 。 arcW,arcH分别为所绘矩形圆角的宽和高。 与drawRoundRect()的区别:该方法所绘制的圆角矩 形中可有填充色。 该方法的使用举例如下:
例9.10 import java.applet.*; import java.awt.*; public class Draw_arc extends Applet { public void paint(Graphics g) { g.setColor(Color.red); g.fillArc(0,40,100,100,0,180); g.fillArc(300,40,30,100,0,360); g.fillArc(200,100,50,50,0,270); } }
(2)、fillArc() 调 用 格 式 : fillArc(int x,int y,int width,int height,int anglestart,int angleend) 作用:绘制一段着色圆弧(扇形)。 参数解释:x,y——该圆弧外接矩形的左上角 坐标。Width,height——该圆弧外接矩形 的宽和高。Anglestart,angleend——该 圆弧的起始角和终止角,单位为“度”。 “0”(零)度角为x轴的正方向。正的角 度按逆时针方向旋转;负的角度按顺时针 方向旋转。 该方法举例如下:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绘制椭圆形和圆形
画矩形和填充矩形的方法分别是drawRect()和 fillRect() 画椭圆形和填充椭圆形的方法分别是drawOval()和 fillOval()
其中Oval表示椭圆 圆形可以看成是短轴和长轴相等的特殊椭圆形。 drawOval()和fillOval()都是Graphics类的成员
public void paint(Graphics g) { //设置画笔颜色为蓝色
g.setColor(Color.blue); //填充一个矩形 g.fillRect(100,150,300,200); //设置画笔颜色为红色 g.setColor(Color.red); //绘制矩形边框 g.drawRect(100,150,300,200); } public static void main(String[] args) { MyCanvas_4 frm=new MyCanvas_4(); frm.setSize(600,400); frm.setVisible(true); } }
Java画图机制
1
介绍Java画图的方法与技术,具体包括Java画 图基础知识;重点介绍使用Java语言进行二维图形的 绘制,包括椭圆、矩形、多边形和线段等图形。
2
本讲概要
Java画图基础 事件机制和画图机制 线程机制和画图机制
本讲重点: 掌握Java画图机制基本概念与应用
例1 一个简单的aw100,150) 高200 宽300
关于paint()方法
paint()方法的调用是由系统自动完成了。 当Frame窗体显示或被激活的时候,系统就自动调 用该方法进行绘图。 我们编程人员就不必关心paint()方法调用的细节问 题。 专注于paint()方法内部绘图逻辑的实现就可以了, 这是面向对象的好处之一。
方法,两个方法的格式如下所示:
public void drawOval(int x,int y,int width,int height);
public void fillOval(int x,int y,int width,int height);
其中(x, y)表示椭圆外接矩形的左上角坐标,width 和height分别表示外接矩形的宽和高
import java.awt.*; public class MyCanvas_1 extends Frame { //无参的构造方法
public MyCanvas_1(){} public static void main(String[] args) {
MyCanvas_1 frm=new MyCanvas_1(); frm.setSize(600,400); frm.setVisible(true); } }
Color.RED:红色对象 Color.BLUE:蓝色对象 Color.YELLOW:黄色对象 Color.BLACK:黑色对象
.......
例4 改变画笔颜色的代码
import java.awt.*; public class MyCanvas_4 extends Frame { //具体的画图方法,覆盖了父类中的同名方法
例2 在窗体中绘图—画出一个矩形
import java.awt.*; public class MyCanvas_2 extends Frame { //具体的画图方法,覆盖了父类中的同名方法
public void paint(Graphics g) { //对象g相当于画笔
//画图的默认颜色是黑色 //drawRect()是对象g的成员方法,绘制一个矩形 //矩形的左上角坐标是(100,150) //宽300,高200 //原点位于窗口的左上角 g.drawRect(100,150,300,200); } public static void main(String[] args) { MyCanvas_2 frm=new MyCanvas_2(); frm.setSize(600,400); frm.setVisible(true); } }
改变画笔颜色
Graphics类默认的画笔颜色是黑色,我们可以调用该 类提供的方法改变画笔颜色,画出五颜六色的图像,改 变画笔颜色的方法是setColor()方法,该方法的格式如 下所示:
public void setColor(java.awt.Color color); 该方法只有一个参数,参数类型是Color,Color是一 个颜色类,通过RGP数值进行定义,当然对于常用的一 些颜色如红黄蓝等等,Color提供了一些静态对象与之 对应:
例5 绘制矩形和椭圆
import java.awt.*; public class MyCanvas_5 extends Frame { //具体的画图方法,覆盖了父类中的同名方法
例3 填充矩形
import java.awt.*; public class MyCanvas_3 extends Frame { //具体的画图方法,覆盖了父类中的同名方法
public void paint(Graphics g) { //对象g相当于画笔
//画图的默认颜色是黑色 //fillRect()是对象g的成员方法,填充一个矩形 //矩形的左上角坐标是(100,150) //宽300,高200 //原点位于窗口的左上角 g.fillRect(100,150,300,200); } public static void main(String[] args) { MyCanvas_3 frm=new MyCanvas_3(); frm.setSize(600,400); frm.setVisible(true); } }
paint()的所在类
—Frame —Window —Container ~ paint() paint()方法存在于Container类中 Frame多层继承了Contianer 自定义的paint()方法“覆盖了”Contianer中的 paint()方法 paint()方法由窗体自动调用
相关文档
最新文档