• 第十九章 Java绘图


    一,Java绘图类

    19.1.1Graphics类

    Graphics类是所有图形上下文的抽象基类,它允许应用程序在组件以及闭屏图像上进行绘制。

    可实现直线,矩形,多边形,椭圆,圆弧等形状和文本,图片的绘制制作。

    19.1.2Graphics2D类

    无法改变线条的粗细,不能对图片使用旋转和模糊等过滤效果。Graphics2D是Graphics的扩展。

         二.绘制图形                    

    19.1绘制奥运五环

    19,2绘制空心圆和实心的集合图形

    三.绘图颜色与画笔属性

    1.设置颜色

    1.使用Color类可以创建任意颜色的对象,不用担心平台是否支持该颜色,因为Java以跨平台与硬件无关的方式支持颜色管理。

    1. Color col = newColor(int r,int g,int b)
    2. Color col = newColor(int rgb)

     2.绘图类 可以使用setColor()方法设置当前颜色。

    setColor(Color color)

     

    2.设置画笔

    1.默认情况下,Graphics类使用画笔属性是粗细为1个像素的正方形,而Graphics2D类可以调用setStroke()方法设置画笔的属性,如改变线条的粗细,虚实,定义线段端点的形状,风格等。

     

    四.绘制文本

    1.设置字体

    1.Java使用Font类封装了字体的大小,样式等属性,该类在java.awt包含定义,其构造方法可以指定字体的名称,大小和样式3个属性。

    Font(String name,int style,int size)

    2.显示文字

     1.Graphics2D类类提供了drawString()方法,使用该方法可以实现图形上下文的文本绘制,从而实现在图片上显示文字功能。

    1. drawString(String str,int x,int y)
    2. drawString(String str,float x,float y)

    19.3绘制文字钟表

    19.5显示图片

    显示照片语法:

    drawimage(Image img,int x,int y,ImageObserver observer)

    19.4在窗体显示照片

    this:重新绘制的时候所要通知的对象

    img:传入的照片

    19.6图像处理 

    19.6.1放大与缩小

     语法:

    drawImage(Image img,int x,int y,int weight,int height,ImageObserver observer)

    19.5通过滑动条改变图片大小

    19.6.2图像旋转 

    另一种重载方法  语法:

    drawImage(Image img,int dx1,int dy1,int dx2,int dy2,int sx1,int sy1,int sx2,int sy2,ImageObserver observer)

    19.6翻转照片

    1. import java.awt.*;
    2. import java.awt.event.*;
    3. import java.io.*;
    4. import javax.swing.*;
    5. import javax.imageio.ImageIO;
    6. public class PartImage extends JFrame {
    7. private Image img;
    8. private int dx1, dy1, dx2, dy2;
    9. private int sx1, sy1, sx2, sy2;
    10. private int width = 300, height = 200;// 图片宽高
    11. private JButton vBtn = null;// 垂直翻转按钮
    12. private JButton hBtn = null;// 水平翻转按钮
    13. private CanvasPanel canvasPanel = null;
    14. public PartImage() {
    15. try {
    16. img = ImageIO.read(new File("src/cow.jpg"));// 读取图片文件
    17. } catch (IOException e) {
    18. e.printStackTrace();
    19. }
    20. dx2 = sx2 = width; // 初始化图像大小
    21. dy2 = sy2 = height;
    22. vBtn = new JButton("垂直翻转");
    23. hBtn = new JButton("水平翻转");
    24. JPanel bottom = new JPanel();
    25. bottom.add(hBtn);
    26. bottom.add(vBtn);
    27. Container c = getContentPane();
    28. c.add(bottom, BorderLayout.SOUTH);
    29. canvasPanel = new CanvasPanel();
    30. c.add(canvasPanel, BorderLayout.CENTER);
    31. addListener();
    32. setBounds(100, 100, 300, 260); // 设置窗体大小和位置
    33. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭模式
    34. setTitle("图片翻转"); // 设置窗体标题
    35. }
    36. private void addListener() {
    37. vBtn.addActionListener(new ActionListener() {
    38. public void actionPerformed(ActionEvent e) {
    39. sy1 = Math.abs(sy1 - height);// 纵坐标互换
    40. sy2 = Math.abs(sy2 - height);
    41. canvasPanel.repaint();
    42. }
    43. });
    44. hBtn.addActionListener(new ActionListener() {
    45. public void actionPerformed(ActionEvent e) {
    46. sx1 = Math.abs(sx1 - width);// 横坐标互换
    47. sx2 = Math.abs(sx2 - width);
    48. canvasPanel.repaint();
    49. }
    50. });
    51. }
    52. class CanvasPanel extends JPanel {
    53. public void paint(Graphics g) {
    54. g.drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, this);// 绘制指定大小的图片
    55. }
    56. }
    57. public static void main(String[] args) {
    58. new PartImage().setVisible(true);
    59. }
    60. }

    19.6.3图像旋转 

    语法:

    rotate(double theta)

    theta:指旋转的弧度

    注:传入参数只能是弧度

    19.7让照片围绕左上角点旋转

    19.6.4图像倾斜

    语法:

    shear(double shx,double shy)

    shx: 水平方向的倾斜量            shy:垂直方向的倾斜量

    19.8让照片变成向做倾斜的平行四边形现状

  • 相关阅读:
    双十一电视机顶盒哪个牌子好?测评员盘点年度电视机顶盒排行榜
    Linux内存管理(二十二):slub 分配器之kmem_cache_alloc
    学习STM32第十五天
    Java并发面试题:(二)线程池参数和使用
    华为OD机试真题【不含 101 的数】
    MyBatis配置与映射文件深度解析
    2022年前端面试题加答案
    网络安全笔记 -- 文件操作(文件下载读取)
    我的驾照考试笔记(2)
    macOS输入法卸载
  • 原文地址:https://blog.csdn.net/2302_76534780/article/details/134401600