Swing201图片绘制

java绘图软件(用java的Swing编写的一个简单的绘图软件,可以用来绘制简单的图形,还可以保存,复制,粘贴等很多功能。)详细功能大家自己下载体验 用java的Swing编写的一个简单的绘图软件,可以用来绘制简单的图形,还可以保存,复制,粘贴。虽然有点小Bug,但是用来当一个毕业设计绝对够格! 立即下载

高级绘制

在这里插入图片描述

import javax.swing.*;

public class Swing2 {
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createGUI();
            }
        });
    }

    private static void createGUI() {
        JFrame frame = new MyFrame("Swing Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 300);
        frame.setVisible(true);

    }
}

import javax.swing.*;
import java.awt.*;

public class MyFrame extends JFrame {
    public MyFrame(String title) {
        super(title);

        JPanel root = new MyPanel();
        this.setContentPane(root);
        root.setLayout(new BorderLayout());
    }
}

import javax.swing.*;
import java.awt.*;

public class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        Graphics2D g2d = (Graphics2D)g;

        g2d.setColor(Color.BLUE);
        g2d.drawLine(0, 0, width, height);
        g2d.drawLine(width, 0, 0, height);

    }
}

Graphics2D

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import javax.swing.*;
import java.awt.*;

public class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        Graphics2D g2d = (Graphics2D)g;

        // 平滑绘制(反锯齿)
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        Stroke stroke = new BasicStroke(2,
                BasicStroke.CAP_BUTT,
                BasicStroke.JOIN_ROUND,
                1,
                new float[] {20, 4},
                0);
        g2d.setStroke(stroke);
        Paint color = Color.BLUE;
        g2d.setPaint(color);

        g2d.drawLine(0, 0, width, height);
        g2d.drawLine(width, 0, 0, height);

    }
}

填充

在这里插入图片描述

package Swing2_02;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

public class MyPanel_swing_02 extends JPanel {
    BufferedImage textureImage;

    public MyPanel_swing_02()
    {
        // 加载背景图片 125 x 125
        URL imagePath = getClass().getResource("/images/grassland.jpg");
        try
        {
            textureImage = ImageIO.read(imagePath);
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    @Override
    protected void paintComponent(Graphics g)
    {
        int width = getWidth();
        int height = getHeight();
        Graphics2D g2d = (Graphics2D) g;

        // 纯色填充
        if (true)
        {
            Color color = new Color(0xFF7F24);
            g2d.setPaint(color);
            g2d.fillRect(0, 0, width / 2, height / 2);
        }

        // 线性渐变填充
        if (true)
        {
            // 右上角
            Rectangle r = new Rectangle(width / 2, 0, width / 2, height / 2);

            // 线性渐变
            // 渐变的方向:从start->end
            // 渐变的颜色:设置N个关键点位
            Point2D start = new Point2D.Float(r.x, r.y); // 起点
            Point2D end = new Point2D.Float(r.x+r.width, r.y); // 终点(渐变的方向)
            float[] dist = { 0.0f, 0.8f, 1.0f };// 插入关键点
            Color[] colors = { Color.GREEN, Color.YELLOW, Color.WHITE }; // 关键点的颜色值
            Paint paint = new LinearGradientPaint(start, end, dist, colors);

            // 设置填充
            g2d.setPaint(paint); // 设置颜色
            g2d.fillRect(r.x, r.y, r.width, r.height);
        }

        // 辐射渐变填充
        if (true)
        {
            // 左下角
            Rectangle r = new Rectangle(0, height / 2, width / 2, height / 2);

            //
            Point2D center = new Point2D.Double(r.getCenterX(), r.getCenterY());
            float radius = width/2;
            float[] dist = { 0.0f, 0.2f, 1.0f };
            Color[] colors = { Color.RED, Color.WHITE, Color.BLUE };
            RadialGradientPaint paint = new RadialGradientPaint(center, radius, dist, colors);

            // 设置填充
            g2d.setPaint(paint);
            g2d.fillRect(r.x, r.y, r.width, r.height);
        }

        // 统理填充
        if (true)
        {
            // 右下角
            Rectangle r = new Rectangle(width/2, height / 2, width / 2, height / 2);

            // 图片是125x125的小图,实际填充时的循环填充直到充满
            // anchor用于指定图片的哪一部分用于填充
            Rectangle anchor = new Rectangle(0,0,textureImage.getWidth(), textureImage.getHeight());
            Paint paint = new TexturePaint(textureImage, anchor);

            // 设置填充
            g2d.setPaint(paint);
            g2d.fillRect(r.x, r.y, r.width, r.height);
        }
    }
}

剪裁区域

在这里插入图片描述

package my;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

public class MyPanel extends JPanel {
    BufferedImage textureImage;

    public MyPanel()
    {
        // 加载背景图片 125 x 125
        URL imagePath = getClass().getResource("/images/demo_pic.jpg");
        try
        {
            textureImage = ImageIO.read(imagePath);
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    @Override
    protected void paintComponent(Graphics g)
    {
        int width = getWidth();
        int height = getHeight();
        Graphics2D g2d = (Graphics2D) g;

        // 设置clip区域(仅区域内可被绘制)
        int size = 200;
        Shape region = new Ellipse2D.Double((width - size) / 2, (height - size) / 2, size, size);
        g2d.clip(region);

        // 绘制图形
        g2d.drawImage(textureImage, 0, 0, width, height, null);
    }
}

绘制彩色边框

在这里插入图片描述

package my;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

public class MyPanel extends JPanel {
    public MyPanel()
    {
    }

    @Override
    protected void paintComponent(Graphics g)
    {
        int width = getWidth();
        int height = getHeight();
        Graphics2D g2d = (Graphics2D) g;

        // 设置线型
        Stroke stroke = new BasicStroke(10);
        g2d.setStroke(stroke);

        Color c1 = Color.GREEN;
        Color c2 = Color.RED;
        drawLine(g2d, 0, 0, width, 0, c1, c2); // 上
        drawLine(g2d, width, 0, width, height, c2, c1); // 右
        drawLine(g2d, width, height, 0, height, c1, c2); // 下
        drawLine(g2d, 0, height, 0, 0, c2, c1); // 左
    }

    private void drawLine(Graphics2D g2d,
                          int x1, int y1, int x2, int y2,
                          Color c1, Color c2)
    {
        // Point2D
        Point2D start = new Point2D.Double(x1, y1); // 起点
        Point2D end = new Point2D.Double(x2, y2); // 终点(渐变的方向)

        float[] dist = { 0.0f, 1.0f };// 插入关键点
        Color[] colors = { c1, c2}; // 关键点的颜色值
        Paint paint = new LinearGradientPaint(start, end, dist, colors);

        // 设置Paint
        g2d.setPaint(paint);

        // 构造一个 Shape
        Shape shape = new Line2D.Double(start,end);
        g2d.draw( shape );
    }
}
FDTD仿真实战:从材料导入到反射率曲线分析 本文提供了一份完整的FDTD仿真实战指南,详细讲解了从自定义材料(如WO3)数据导入、结构建模、仿真区域与网格设置,到光源与监视器配置、运行仿真并提取反射率数据的全流程。重点解决了材料库缺失、网格优化、边界条件设置等常见难题,旨在帮助研究人员高效、准确地通过FDTD仿真获取材料的关键光学特性——反射率曲线。 阅读详情

相关推荐

5分钟搞定!用ZLMediaKit搭建GB28181视频监控系统(含避坑指南)

本文提供了一份基于ZLMediaKit搭建GB28181视频监控系统的实战指南。文章详细介绍了从环境准备、核心组件(ZLMediaKit与SIP服务器)部署、摄像头配置到内外网穿透的完整流程,并重点分享了设备ID配置、防火墙设置等关键避坑经验,帮助开发者快速构建稳定可控的监控平台。

apple5的专栏 1087

JavaSwing图片绘制,实现简单的图片查看器

刚学到JavaSwing图片绘制,于是自己做了个简易的图片查看器小程序,在这里分享给大家,请多多指教。 话不多说先上部分图: 绘制图片需要自定义一个控件,我们这里写一个继承自JPanel的类,重写paintComponent()函数。 获取图片有三种方式:资源文件、本地文件和Http文件,这里为了方便我只写了本地文件方法,因为我觉得图片查看的话还是本地文件有用。下面代码中注释掉的是资...

qq_41932905的博客 6289

UDP_千兆光通信(四)Tri Mode Ethernet MAC ip核

其中 Transmit Engine 从 AXI-Stream TX 接口接收数据,并添加前导码 Preamble、帧起始界定符 SFD、帧校验序列 FSC 等,并在必要时(长度小于最小 MAC 帧长度)填充数据,因此在使用 TEMAC 时,MAC 帧的这几个部分就不需要我们自己添加了(不过其他的 MAC 帧部分,可选的帧过滤器 Frame Filter 用于过滤与一组可配置过滤器匹配的帧,一般用于过滤掉目的 MAC 地址与本设备不一致的帧,TEMAC 默认开启帧过滤器。默认值为使用64位宽的计数器。

lzr232的博客 1776

Swing画图并调整大小和移动位置

复选框菜单效果 单选菜单效果 可以让图形变大变小可以控制图形左右移动可以控制图形上下移动

Java技术栈,分享不断学习、不断超越、不断积累的历程! 913

【学习笔记】计算机网络 第八章 无线局域网(WLAN)

计算机网络 第八章 无线局域网(WLAN)

Vera_shsf的博客 1244

从服装打版到激光切割:二维异形件排版算法在实际生产中的避坑指南

本文深入探讨二维异形件排版算法在服装、家具等行业的实际应用,对比NFP和重叠移除两种核心策略的优缺点,并提供算法落地的五大实战陷阱与解决方案。通过案例分析和技术要点解析,帮助生产管理者提升材料利用率5%-15%,优化生产效率。

weixin_28717431的博客 416

使用Java Swing组件开发画板(4)

JFrame使用 Java画板 分形

qq_64037280的博客 764

5分钟搞定Conflux钱包注册:Fluent钱包从安装到转账全流程指南

本文提供Conflux公链上Fluent钱包的完整注册和使用指南,涵盖从安装、助记词备份到CFX转账的全流程。特别强调安全操作要点,包括助记词保管和网络选择,帮助用户5分钟内快速掌握这款国产公链钱包的核心功能,确保数字资产安全。

weixin_29181861的博客 244

Java Swing编程中对图片的编辑

对图片实现水印

qq_45515182的博客 3240

深度解析direct path write temp与ASM IO性能问题:Oracle 19.17视图查询优化指南

本文深度解析了Oracle 19.17版本中复杂视图查询出现`direct path write temp`与`ASM IO for non-blocking poll`性能瓶颈的根本原因。通过对比11.2.0.4版本的执行计划差异,文章提供了从CBO参数调整、存储层优化到SQL架构重构的完整实战调优指南,帮助DBA有效解决升级后的查询性能问题。

2y3u4i5o6p的博客 1100

OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,将首次通过简单示例了解轮廓的基本概念,然后通过实际示例来了解如何检测和压缩轮廓,最后利用介绍如何利用图像矩描述检测到的轮廓属性。

盼小辉丶的博客 3万+

《java 桌面软件开发》swing 以鼠标为中心放大缩小移动图片

swing 使用Graphic2D 绘制图片,要实现对图片进行缩放和自由拖动。 1.以鼠标所在的位置为中心,滚轮控制缩放 2.缩放后再支持鼠标拖动。 一:所以,我们可以自行创建一个 “绘图区”, 创建一个空的ImageBuffer, 然后获取这个ImageBuffer的 Graphics, 后续全部往这个ImageBuffer的 Graphics 绘制. 二: 最后在frame的paintComponent把我们这个 绘图区原样展示出来即可。 即,frame的paintComponent只是固定将

Canok 1942

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)

精准农业是现代农业发展的核心方向,其中杂草的实时、准确检测是减少除草剂滥用、实现变量喷施的关键技术瓶颈。本文详细阐述了一套完整的、基于YOLO(You Only Look Once)系列目标检测算法的田间杂草检测系统。系统覆盖从模型对比选型(YOLOv5, YOLOv6, YOLOv7, YOLOv8)、自定义数据集构建与标注、模型训练与优化,到最终构建基于PyQt5/FastAPI/Gradio的可视化UI界面的全流程。本文提供了完整的Python代码、项目结构、训练技巧及公开数据集指引,旨在为农

YOLO 358

java GUI SWING

GUI编程 GUI是什么 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 简介 GUI: Swing AWT AWT 1. AWT介绍 包含了很多类和接口 元素:窗口,按钮,文本框 java.awt 2. 组件和容器 2.1 Frame package qwx.GUI; import java.awt.*; //GUI的第一个界面 public class TextFrame { public static void main(String[] args) {

Braveryya的博客 424

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java Swing 学习日记

Java Swing 图形化界面学习笔记

u011512080的博客 388

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

2.4俄罗斯方块项目GUI_swing(源码+lun文+视频齐全)--需要源码联系博主-论文中是带有图片的 没复制出来

本文基于Java语言设计并实现了一个俄罗斯方块游戏。俄罗斯方块作为经典休闲游戏,具有简单易上手但趣味性强的特点。论文首先分析了游戏开发背景与意义,介绍了Java、Swing组件和Eclipse开发环境等关键技术。在系统设计部分,详细阐述了游戏功能模块划分,包括主界面显示、画布绘制、方块控制、菜单面板等核心功能。通过软件工程方法完成了需求分析、概要设计和详细设计,并给出了具体实现代码。测试结果表明,该游戏实现了方块移动旋转、消行计分、难度升级等基本功能,并创新性地加入了颜色变换和音效模块。该系统在Window

fshao123的博客 558

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java写七星彩兑奖_【技术分享】Java Swing界面完成七星彩抽奖系统

该楼层疑似违规已被系统折叠隐藏此楼查看此楼import java.awt.BorderLayout;import java.awt.Color;import java.awt.Cursor;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Font;import java.awt.Point;import j...

weixin_42381087的博客 346

JAVA Swing 纯后端使用Dynamicreports生成报表,并插入JFreeChart

setHorizontalAlignment(HorizontalAlignment.CENTER),// 列。Columns.column("材质_管径", "caption", DataTypes.stringType()).title(Components.text("材质").setStyle(titleStl))//插入生成后的图片。map2.put("caption","汇总");map.put("caption","长度");//这是我之前生成好的柱形图类。

2301_76307772的博客 371

Java第6周实验

import java.awt. *; import javax.swing. *; public class ShowImg extends JApplet { Image imgl; public void init() { imgl=getImage(getCodeBase(),"../img.gif.jpg"); } public void paint(Graphics g

我的专栏 633

Java--Gui的学习

GUI编程 告诉大家怎么学? 这是什么? 他怎么玩? 该如何去在我们平时运用? 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1、简介 GUI的核心技术:Swing AWT 界面不美观 需要jre环境! 为甚恶魔我们要学习呢? 可以写出自己心中想要的一些工具 工作的时候,也可能需要维护到swing界面,概率小! 了解MVC架构,了解监听! 2、 AWT(抽象的窗口工具) 2.1、AWT介绍 包含了很多类和接口,GUI:图形用户界面编程

weixin_59981898的博客 269

第6周作业-图像缩放显示

import java.awt.*; import javax.swing.*; public class ShowImg extends JApplet{ Image img1; public void init(){ img1 = getImage(getCodeBase(),"2.gif"); } public void paint(Graphics g){ int w

进击的陈培凯 1457

GUI编程

小白自学GUI的笔记记录

WX139216的博客 388

18、GUI编程简介以及贪吃蛇项目开发

一、组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 二、简介 GUI的核心技术:Swing AWT 因为界面不美观。 需要jre环境! 为什么我们要学习? 可以写出自己心中想要的一-些小工具 工作时候,也可能需要维护到swing界面,概率极小! 了解MVC架构,了解监听! 三、AWT 3.1、Awt介绍 包含了很多类和接口!GUI! 元素:窗口,按钮,文本框 java.awt 3.2、组件和容器 1. 窗口frame //GUI的第一个界面

coder_lcw的博客 315

JTable 里的单元格如何使得双击进入单元格后,单元格的内容处于全选中状态

转自: http://bbs.youkuaiyun.com/topics/390195204 ———————————————————————————————————————— java 达人, 最近在开发一个 java 模块,用到了 JTable。现在对 JTable 里的单元格的操作中,在双击进入单元格后,单元格的内容不是全选中状态。 请问有啥办法使得双击进入单元格后,单元格的内容处于

auragreen的专栏 2670

GUI编程学习笔记

GUI编程 组件: 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标事件、键盘事件 破解工具 1、简介 GUI的核心技术:Swing AWT 1.界面不美观 2.需要jre环境 用处: 可以写一些自己的小工具 工作时候可能需要维护到swing界面,概率极小 了解M

King Gigi的博客 545

错误 eventqueue.java_线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException [duplicate]...

这个问题在这里已有答案:我知道这个异常被问到的频率,我已经阅读了很多关于这个问题的线索,但我仍然不知道为什么这个错误总是出现,当我删除'mf'变量时,它确实有效,但没有显示图片起来 .代码 . 名称的游戏“AWT-EventQueue-0”java.lang.NullPointerException java.lang.NullPointerException(game.java:118) . 代...

weixin_29332623的博客 1010
上一篇: pandas-学习
下一篇: swing202文本绘制
dingpython
博客等级 码龄6年 5粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值