//学了太多的基础,感觉一直没太大的进步,因此,我决定增加以下学习的难度,以此来增加自己的学习兴趣;
/**
* Java 绘图相关技术的学习
*Graphics类相关技术知识:
* 1.Graphics类是所有图像绘图的基类,是一个抽象类;
* 2.Graphic2D继承Graphics类,对Graphics类进行了扩展。
* 3.我们如果需要创建一个绘图类,推荐使用Graphics2D,该类分别使用不同的类来表示图形;
* 1.对于该类图形,我们使用GraphicsD类的draw()方法绘制,使用fill()进行填充;
* 2.在java.awt.geom包中,实现了Shape接口的图形类可以上述两个方法。例如Line2D;
*
* 3.在各类图形类中,我们使用Double和Float这两个实现类进行图形的不同精度构造,不同的精度需要的内存也不同。
*
* 相关绘图知识介绍
* 1.颜色类Color
* 1.可以创建任何颜色,与平台无关;
* 2.Color(int r,int g,int b)或者Color(int rgb);
* 3.该类还定义了许多静态颜色常量,可以通过Color.RED访问;
* 4.设置颜色setColor()
*
* 2.画笔
* 1.在GraphicsD类可以通过setStroke(Strock strock)方法设置画笔的属性,包括线条的粗细,虚实和线段端点的样式。
* 2.Strock接口作为参数
*
* 3.文本
* 1.Font(String name ,int style,int size);字体名字,类型和大小
* 2.SetFont(Font font);
* 3.drawString(String str,int x,int y):通过Graphics2D类中的方法来绘制显示字体;
*
*
* 4.图像绘制
* 1.获取图片资源路径getResource();
* 2.获取图片getImage();
* 3.drawImage()绘制显示图片
*
* 4.jSlider.getValue():可通过滑动组件来控制图片的缩放比例
*
*
*
*/
package app;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.net.*;
//包含有main函数的类的类名和文件名必须保持一致
public class ImageShape extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
private final int width = 700;
private final int height = 700;
private Image img;
private Shape Rect;
private Font font;
public ImageShape()
{
super();
init();
}
private void init()
{
this.setSize(width, height);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体面板为绘图面板对象
this.setContentPane(new Canvas());
this.setTitle("绘图");
}
public static void main(String[] args)
{
new ImageShape().setVisible(true);
}
class Canvas extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1678373920467727747L;
public void paint(Graphics g)
{
super.paint(g);
//Graphics用法
g.setColor(new Color(255, 0, 0));
g.fill3DRect(100, 100, 200, 200, true);
g.setColor(Color.GRAY);
g.fillRect(350, 100, 200, 200);
//Graphics2D的用法
Graphics2D g1 = (Graphics2D) g;
g1.setColor(new Color(0,255,0));
Shape[] shape = new Shape[2];
shape[0] = new Ellipse2D.Double(100, 350, 200, 250);
shape[1] = new Rectangle2D.Double(150, 400, 100, 100);
g1.draw(shape[0]);
g.setColor(new Color(0,0,255));
g1.fill(shape[1]);
//相关用法
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLACK);
g2.setFont(new Font("宋体", Font.BOLD, 15));
g2.drawString("Java 绘图学习.", 400, 400);
//图片绘制
URL url = ImageShape.class.getResource("lena.jpg");
img = Toolkit.getDefaultToolkit().getImage(url);
Graphics2D g3 = (Graphics2D) g;
/* g3.drawImage(img, 0, 0, this);*/
//图片的缩放
int w = img.getWidth(this) * 30 / 100;
int h = img.getHeight(this) * 30 / 100;
g3.drawImage(img, 400,450,w,h,this);
}
}
}
来源:CSDN
作者:TxyITxs
链接:https://blog.csdn.net/TxyITxs/article/details/103736997