JAVA---图形处理
Posted Yi_Warmth
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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---图形处理的主要内容,如果未能解决你的问题,请参考以下文章