java scroll column2d_使用Java2D改善API的绘制效果

packagecom.siwuxie095.swingpaint;

importjava.awt.BasicStroke;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Graphics2D;

importjava.awt.RenderingHints;

importjava.awt.image.BufferedImage;

importjava.io.IOException;

importjavax.imageio.ImageIO;

importjavax.swing.JPanel;

//使用Java 2D完成界面的绘图优化

//MyPanel继承自JPanel

public classMyPanel extendsJPanel {

//创建一个BufferedImage

BufferedImage image=null;

publicMyPanel() {

try{

//使用ImageIO.read()读取图像,传入URL

//可以是本地图像,也可以是网络图像

//这里读取本地图像,因为使用的是getClass().getResource()

//所以img.png必须和调用的类MyPanel在同一个包中

//有异常抛出,使用try catch捕获

image=ImageIO.read(getClass().getResource("img.png"));

} catch(IOException e) {

e.printStackTrace();

}

}

//覆盖JPanel的paintComponent()方法,

//右键->Source->Override/Implement Methods->JComponent

//对于每一个组件来说,paintComponent()方法是绘制组件本身

//传入Graphics,通过它在界面绘制图像

@Override

protectedvoidpaintComponent(Graphics g) {

//注释掉默认的从父类继承的绘图方法

//super.paintComponent(g);

//如果不使用Java 2D,使用普通的绘图API,

//则绘制的图像有很明显的锯齿

//创建一个Graphics2D对象:g2d,需要强转

//g2d支持的属性和方法更多

Graphics2D g2d=(Graphics2D) g;

//图像渲染的提示,提示值代表了当前的绘图是否支持锯齿消除

//传入键值对,为Graphics2D添加抗锯齿

//(通过类调用静态值)

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

//Graphics2D完全兼容Graphics的一些方法,包括draw和fill方法

//draw方法绘制的都是线框、轮廓(空心),而fill方法绘制的是填充的图像(实心)

//对于一般的draw方法,都会有对应的fill方法(空心对实心)

//Graphics2D的setClip()方法

//需要指定X Y坐标,宽度,高度

//指定绘制图像的区域,超出就不会被绘制

g2d.setClip(0, 0, 500, 500);

//先使用setColor()为当前的绘图指定颜色

//使用匿名对象,创建一个新的Color对象

//每一个rgb的值最大为255,最小为0

//可以为不同的形状填充不同的颜色

g2d.setColor(newColor(255,0,0));//红色

//绘制方块,需要指定X Y坐标,宽度,高度

// 0 0即从左上角开始绘制

g2d.drawRect(0, 0, 100, 100);

//也可以使用静态方法通过类调用

g2d.setColor(Color.GREEN);

//绘制圆形、椭圆形,需要指定X Y坐标,宽度,高度

//如果宽高一致,绘制的就是圆形

g2d.drawOval(0, 0, 100, 100);//圆形

g2d.setColor(Color.BLUE);

g2d.drawOval(0, 25, 100, 50);//椭圆形

g2d.setColor(Color.ORANGE);

//填充方块,需要指定X Y坐标,宽度,高度

g2d.fillRect(100, 100, 100, 100);

//填充带圆角效果的方块,需要指定X Y坐标,宽度,高度,圆角的弧宽,圆角的弧高

//一般情况下,将圆角的弧宽,圆角的弧高,两个弧度值设置成相等

//弧宽越大,则X方向上圆角越长,弧高越大,则Y方向上圆角越长

//弧宽与弧高指定了X Y方向上圆角的大小

g2d.fillRoundRect(200, 0, 100, 100, 10, 10);

g2d.fillRoundRect(300, 100, 100, 100, 200, 50);

//绘制String,需要指定X Y坐标

//绘制Bytes Chars同String

//设置颜色与字体

g2d.setColor(Color.YELLOW);

g2d.setFont(newFont("Arial", Font.BOLD, 20));

g2d.drawString("TestAPI", 110, 50);

g2d.setColor(Color.CYAN);

//绘制弧线需要指定x y坐标,宽度,高度,起始角度,弧线延长的角度

//绘制时按照逆时针绘制弧线

//

//先画一个矩形,然后以这个矩形的中心为所要画的弧的中心,

//以水平向右为0度,逆时针为正方向

g2d.drawArc(0, 200, 100, 100, 270, 90);

g2d.fillArc(0, 200, 100, 100, 0, 270);

g2d.fillArc(100, 200, 100, 200, 0, 90);

g2d.drawArc(100, 200, 100, 200, 90, 90);

g2d.fillArc(200, 200, 100, 200, 30, 120);

//绘制图像,选择传参最少的方法

//需要指定:图像对象image,X Y坐标,observer(可指定为空)

//对于image可以在构造函数MyPanel()中加载图像

if(image!=null) {

g2d.drawImage(image, 0, 100, null);

//绘制图像时可以指定图像的大小

}

//绘制线段时,线段可以指定粗细等属性

//第一个参数是线段的粗细,

//第二个参数CAP表示线段头部的形状(圆/方等)

//第三个参数JOIN表示线段曲折的地方的形状(尖/圆等)

g2d.setStroke(newBasicStroke(5,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_ROUND));

g2d.setColor(newColor(0,0,0));

//绘制直线需要指定两组X Y坐标

g2d.drawLine(205, 105, 300, 200);

//绘制多边形,传入一组X坐标,一组Y坐标,和坐标数目

g2d.fillPolygon(newint[]{350,300,333,366,400}, newint[]{0,50,100,100,50}, 5);

g2d.drawPolygon(newint[]{350,300,333,366,400}, newint[]{200,250,300,300,250}, 5);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值