JAVA---图形处理

摘要:
抽象窗口化工具为图形用户界面提供了API编程接口,使得java可以提供较好的图形用户界面。AWT把图形处理分为两层:一是处理原始图形,直接以点线面的形式画到界面上;二是提供大量组件,实现可定制的图形用户界面。图形对象封装了JAVA支持的基本渲染操作的状态信息,包括画图的组件对象、渲染区域的坐标、区域、颜色、字体、画图模式等。

抽象窗口化工具(AWT)为图形用户界面提供了API编程接口,使得java可以提供较好的图形用户界面。AWT把图形处理分为两层:一是处理原始图形,直接以点线面的形式画到界面上;二是提供大量组件,实现可定制的图形用户界面。JAVA编程语言中的坐标系不同于数学中的坐标系,屏幕左上角为(0,0),右下角为屏幕水平向右和垂直向下增长的像素。

方法:

1:public void paint(Graphics g)

2:Repaint :Applet重画系统时自动调用paint方法。

3:Update方法 :public void Update(Graphics g) 更新容器,向Repaint发出刷新小应用程序的信号,缺省的Update方法清除Applet画图区并调用paint方法。

Graphics类

Graphics类是所有图形上下文的抽象类,允许应用程序在各种设备上实现组件的画图。图形对象封装了JAVA支持的基本渲染操作的状态信息,包括画图的组件对象、渲染区域的坐标(coordinates)、区域(clip)、颜色(Color)、字体(Font)、画图模式等。Graphics类提供画各种图形的方法,其中包括线、圆和椭圆、矩形、多边形、图像及各种字体等。

public abstract void clipRect(int x,int y,int width,int height); 指定的区域划分。

public abstract void drawLine(int x1,int y1,int x2,int y2); 使用当前颜色,在(x1,y1)和(x2,y2)之间画线

public abstract void drawOval(int x1,int y1,int width,int height); 画椭圆

public abstract void fillOval(int x1,int y1,int width,int height); 画实心椭圆

public abstract void drawPolygon(int[] xPoints,int[] yPoints,int nPoints); 画x和y坐标定义的多边形

public abstract void drawRect(int x1,int y1,int width,int height); 画矩形

public abstract void fillOval(int x,int y,int width,int height); 画实心矩形

public abstract void drawRoundRect(int x1,int y1,int width,int height,int arcwidth,int archeight); 使用当前颜色画圆角矩形

public abstract void drawString(String str,int x,int y);使用当前字体和颜色画字符串str。

public abstract void setColor(Color c); 设置图形上下文的颜色。

public abstract void setPaintMode(); 设置画模式

public abstract boolean drawImage(Image img,int x,int y,ImageObserver observer); 画特定图;

public abstract void setFont(Font font); 设置特定的font字体; public Font(String name,int style,int size);

eg: Font f=new Font("TimesName", Font.BOLD+Font.ITALIC,12)

例子:

import java.awt.*;

import java.applet.*;

import java.geom.*;

public class SimpleGUI extends Applet{

Image samImage;

public void init(){

samImage=getImage(getDocumentBase(),"sample.gif");

}

public void paint(Graphics g){

g.clipRect(50,50,180,180);

g.drawLine(0,0,20,30);

g.drawString("图形显示",100,30);

Color c=new Color(255,200,0);

g.setColor(c);

Font f=new Font("TimesRomn",Font.BOLD+Font.ITALIC,24);

g.setFont(f);

g.drawString("图形显示",180,30);

g.drawLine(20,20,100,50);

g.drawLine(20,20,50,100);

g.drawRect(40,40,40,40);

g.fillRect(60,60,40,40);

g.setColor(Color.red);

//3D矩形

g.draw3DRect(80,80,40,40,true);

g.draw3DRect(120,120,40,40,true);

g.filll3DRect(120,210,40,40,true);

//椭圆形

g.drawOval(150,150,30,40);

g.fillOval(170,170,20,20);

g.setColor(Color.blue);

//圆角矩形

g.drawRoundRect(180,180,40,40,20,20);

g.fillRoundRect(200,200,40,40,20,20);

//多边形

int xC[]={242,260,254,297,242};

int yC[]={240,243,290,300,270};

g.drawPolygon(xC,yC,5);

//图片

g.drawImage(samImage,250,50,this);

}

}

Color类

Color类是用来封装颜色的,使用Color类中较简单的方法就是使用Color提供的预定义颜色,红色:Color.red;橙色:Color.orange等。也可以使用RGB颜色模式进行定义,所谓的RGB 即为:red,green,blue三种颜色进行调合,三种基色的范围是:0~255;

常用的颜色RGB值以及对应的类预定义的参数:

白色:Color.white; (255,255,255)。浅灰色:Color.lightGray;(192,192,192)。灰色:Color.gray;(128,128,128)。深灰色:Color.drakGray;(64,64,64)。黑色:Color.drak;(0,0,0,)。

红色:Color.red;(255,0,0)。粉红色:Color.pink;(255,175,175)。橙色:Color.orange;(255,200,0)。黄色:Color.yellow;(255,255,0)。绿色:Color.green;(0,255,0)。品红色:Color.magenta;(255,0,255)。深蓝色:Color.cyan;(0,255,255)。蓝色:Color.blue;(0,0,255)。

Color还可以构造一个函数,public Color(int red,int green,int blue,int alpha); alpha是指透明度,为255是完全不透明,可以正常显示;当alpha分量为0时,表示完全透明,前三个分量不起作用,而介于0~255之间的值可以制造出颜色不同的层次效果。

eg:

import java.awt.*;

import java.applet.*;

import java.awt.geom.*;

public class UseColor extends Applet{

public void paint(Graphics oldg){

Graphics2D g=(Graphics2D)oldg;

g.setColor(Color.blue);

g.fill(new Ellipse2D.Float(50,50,150,150));

g.setColor(new Color(255,0,0));

g.fill(new Ellipse2D.Float(50,50,140,140));

g.setColor(new Color(255,0,64));

g.fill(new Ellipse2D.Float(50,50,130,130));

g.setColor(new Color(155,0,0,128));

g.fill(new Ellipse2D.Float(50,50,110,110));

g.setColor(new Color(255,0,0,255));

g.fill(new Ellipse2D.Float(50,50,90,90));

g.setColor(new Color(255,200,0));

g.fill(new Ellipse2D.Float(50,50,70,70));

}

}

免责声明:文章转载自《JAVA---图形处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇委外核销分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP图像处理(GD库)

一、图像处理概述 1、开启GD2图像扩展库 ①PHP不仅限于只产生HTML的输出,还可以创建与操作多种不同格式的图像文件。PHP提供了一些内置的图像处理函数,也可以使用GD函数库创建新图像或处理已有的图像。目前GD2库支持JPEG、PNG和WBMP格式。 ②GD扩展用于动态创建图片,使用C语言编写,开放源代码,现在的版本是2.0,所以称为GD2。 ③开...

[ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法

如果你想让你开发的PyQt5工具展示的数据显得整齐、美观、好看,显得符合你的气质,可以考虑使用QTableWidget控件。之前一直使用的是textBrowser文本框控件,数据展示还是不太美观。其中QTableWidget是PyQt5程序中常用的显示数据表格的控件,显示的基本效果如下,有点素。。 下面开始介绍QTableWidget常用的方法以及如何使...

Sublime Text3安装教程,配置教程,常用插件安装等方法

前言: sublimeText3的特点: 1、Sublime Text 是一款跨平台代码编辑器,在Linux、OS X和Windows下均可使用。 2、Sublime Text 是可扩展的,并包含大量实用插件,我们可以通过安装自己领域的插件来成倍提高工作效率。 3、Sublime Text 分别是命令行环境和图形界面环境下的最佳选择,同时使用两者会大大提...

arcgis中邻接矩阵文件的生成

首先我要说明的是,arcgis 9.2中已经实现基于基本一阶邻接关系的空间自相关计算,也就是说arcgis系统本身已通过一定算法解决了本文以及之前blog中涉及的相关问题。以下内容仅限于算法设计的兴趣及对arcgis相关功能实现的探讨。arcgis 9.2中对于空间关联矩阵文件的构建做了拓展,你可以DBF属性中任意值为Unique的字段来建立矩阵。原先矩阵...

java在图片上添加文字

业务需求要在图片上添加水印。下面粘出代码供自己和大家分享 packagecom.pro.drawTextOnImg; importjava.awt.Color; importjava.awt.Font; importjava.awt.FontMetrics; importjava.awt.Graphics2D; importjava.awt.Im...

第二章 JSP页面制作基础

第二章  JSP页面制作基础 [本章导读] JSP页面将Java代码嵌入到HTML脚本中,掌握HTML语言是学习JSP的基础。HTML是网页制作的一种规范,一种标准,它通过标记符来标记网页的各个部分。本章首先介绍用HTML制作网页的各种标记符的设置方法,接着介绍了CSS的基本概念和使用方法。此外,为了增强读者对网页制作的了解,介绍了Dreamweaver的...