1、AWT包中的Graphics类绘制图形
方法:
drawLine(intx1,inty1,intx2,inty2)绘制直线,4个参数为起点与终点坐标
drawOval(intx,inty,intwidth,intheight)绘制椭圆,矩形区域左上角坐标与长宽
drawRect(intx,inty,intwidth,intheight)左上角坐标与长宽
drawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)绘制圆弧,弧作为椭圆一部分,后两个参数指定起点的角度与弧度
drawPolygon(int[]xPoints,int[]yPoints,intnPoints)绘制多边形,前面两个参数分别给出多边形按顺序排列的各角的x,y坐标,最后一个参数给出坐标点数量
drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)绘制圆角矩形后,后两个参数反映圆角的宽度与高度
drawString(Stringstr,intx,inty)绘制文字
fillOval(intx,inty,intwidth,intheight)绘制填充椭圆
fillRect(intx,inty,intwidth,intheight)绘制填充矩形
fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)绘制填充圆角矩形
fillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)绘制填充扇形
2、显示文字
创建Font类对象
Fontmyfont=newFont("宋体",Font.BOLD,12)
参数1:字体名;参数2:风格常量(Font类中定义了3个:Font.PLAIN普通,Font.ITALIC斜体,Font.BOLD粗体)
参数3:字体大小
要同时兼有几种风格通过"+"连接Font.BOLD+Font.ITALIC
使用Graphics类的setFont()方法设置字体
g.setFont(myfont);
给GUI部件设置字体
Buttonbt=newButton("OK");
bt.setFont(myfont);
使用getFont()获取字体
用FontMetrics类获得关于字体的更多信息
先调用getFontMetrics(Font)得到FontMetrics对象引用
intstringWidth(Strings)返回给定字符串的宽度
intgetHeight()返回字体的高度
intcharWidth(charch)返回给定字符的宽度
注意:在所有图形部件的父类Component中有如下方法:
getHeight()返回部件的高度
getWidth()返回部件的宽度
或者调用getSize()返回一个Dimension类型对象,使用其属性height,width访问
Applet能使用上术方法,但是getHeight()/getWidth()是JDK1.2以后才支持,考虑兼容性建议使用getSize
3、颜色控制
创建Color类
3种构造函数
publicColor(intRed,intGreen,intBlue)每个参数取值0~255
publicColor(floatRed,floatGreen,floatBlue)取值0.0~1.0
publicColor(intRGB)HTML中的颜色方式,一般使用十六进制最大值为0xff(255)
设置画笔颜色
setColor(newColor(190,22,244))/使用Color类常量setColor(Color.blue)
获得当前颜色
getColor()
注意:在所有图形部件的父类Component中有如下方法:
setBackground()设置背景色
setForeground()设置前景色
getBackground()获取GUI对象的背景
getForeground()获取GUI对象的前景
4、Java2D图形绘制
使用Graphics的字类Graphics2D在java.awt.geom中定义
创建各种图形类对象
线段:Line2D.Floatline=newLine2D.Float(60F,12F,80F,40F)
矩形:Rectangle2D.Float或Rectangle2D.Double创建
椭圆:Ellipse2D.Floatty=newEllipse2D.Float(113,20,30,40)
弧:用Arc2D.Float创建接收7个参数,最后一个在3个常量中取:
Arc2D.OPEN(不闭合);Arc2D.CHORD(使用线条连接弧的两端点);Arc2D.PIE(将弧的端点与椭圆中心连接起来,形成扇形);
多边形:GeneralPathpolly=newGeneralPath();
3个方法:voidmoveTo(floatx,floaty)将一个点加入到路径
voidlineTo(floatx,floaty)将一个指定点加入路径用直线连接
voidclosePath()将多边形的终点与始点连接闭合
指定填充方式:
setPaint(Paint)
3个实现Paint的类
Color:单色填充
GradientPaint(x1,y1,color1,x2,y2,color2):渐变填充从(x1,y1)到(x2,y2)作渐变填充
开始颜色为color1,终点颜色为color2
GradientPaint(x1,y1,color1,x2,y2,color2,booleancyclic):最后一个参数为true则支持周期渐变,周期渐变前后两点通常设置比较近,在填充范围可重复渐变形成花纹效果
设置画笔
setStroke()方法使用BasicStroke对象作为参数,可设置绘制图形线条宽度和连接形状
BasicStroke构造函数:
BasicStroke(floatwidth)
BasicStroke(floatwidth,intcap,intjoin)
BasicStroke(floatwidth,intcap,intjoin,floatmiterlimit,float[]dash,floatdash_phase)
其中width表示线宽度;
cap决定线条端点修饰样式,3个常量:CAP_BUTT(无端点)、CAP_ROUND(圆形端点)、CAP_SQUARE(方行端点);
join代表线条的连接点样式,取值3个常量:JOIN_MITER(尖角)、JOIN_ROUND(圆角)、JOIN_BEVEL(扁平角);
最后一个构造方法可规定虚线方式;
绘制图形:
无论绘制何种图形,都使用相同的Graphics2D方法:
voidfill(shapes)绘制一个填充图形
voiddraw(shapes)绘制图形的边框
图形绘制变换
利用AffineTransform类实现图形绘制变换:平移、缩放、旋转
创建
AffineTransformtrans=newAffineTransform();
设置变换格式:
translate(doublea,doubleb)将图形坐标偏移到(a,b)处,绘制时按新原点确定坐标
scale(doublea,doubleb)将图形在X轴方向缩放a倍,Y轴方向缩放b倍
rotate(doubleangle,double,x,doubley)将图形按(x,y)为轴中心旋转angle个弧度
将Graphics2D对象设置为采用该变换的画笔
g2d.setTransform(trans);
g2d.draw(rect);
(JavaApplet作为一种图形部件,是面板(Panel)的子类)