Java 窗体中显示图像

Java 截图工具(包括将截图保存到剪切板) 效果如下: 双击鼠标后将hong 阅读详情

除了JLabel ,还可以绘制图像
 

drawImage

public abstract boolean drawImage(Image img,
                                  int x,
                                  int y,
                                  Color bgcolor,
                                  ImageObserver observer)

绘制指定图像中当前可用的图像。图像的左上角位于此图形上下文坐标空间的 (x, y)。以指定的背景色绘制透明像素。
 

参数详解

  1. Image img:

    • 这是你要绘制的图片对象。就像是你要复印的那张原始图片。
    • 你可以通过Toolkit.getDefaultToolkit().getImage("图片路径")或者ImageIO.read(new File("图片路径"))来获取这个图片对象。
  2. int x, int y:

    • 这是图片左上角的坐标位置。就像是你要把复印的图片放在纸上的哪个位置。
    • x是水平方向的位置,y是垂直方向的位置。
  3. Color bgcolor:

    • 这是图片的背景颜色。如果图片有透明部分,透明的地方就会显示这个背景颜色。
    • 如果你不想要背景颜色,可以传入null。
  4. ImageObserver observer:

    • 这是一个监听器,用来观察图片加载的进度。
    • 如果你不需要监听图片加载进度,可以传入null,或者直接传入当前的组件(比如this)。

返回值

这个方法返回一个boolean值,表示:

  • true:图片已经完全加载并绘制。
  • false:图片还在加载中,需要通过ImageObserver来获取后续通知。
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    
    public class ImageDemo extends JFrame {
        private Image myImage;
        
        public ImageDemo() {
            super("图片绘制示例");
            setSize(500, 400);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            try {
                // 加载图片(请确保图片路径正确)
                myImage = ImageIO.read(new File("path/to/your/image.jpg"));
            } catch (IOException e) {
                e.printStackTrace();
                JOptionPane.showMessageDialog(this, "无法加载图片");
            }
            
            // 创建一个面板来绘制图片
            JPanel panel = new JPanel() {
                @Override
                protected void paintComponent(Graphics g) {
                    super.paintComponent(g);
                    Graphics2D g2 = (Graphics2D) g;
                    
                    // 绘制图片,背景为白色,使用当前面板作为观察者
                    g2.drawImage(myImage, 50, 50, Color.WHITE, this);
                    
                    // 绘制一个带缩放的图片
                    g2.drawImage(myImage, 250, 50, 150, 100, Color.LIGHT_GRAY, this);
                    
                    // 绘制一个部分图片(只显示图片的一部分)
                    g2.drawImage(myImage, 50, 200, 200, 300, 
                                 100, 50, 200, 150, Color.YELLOW, this);
                }
            };
            
            add(panel);
            setVisible(true);
        }
        
        public static void main(String[] args) {
            SwingUtilities.invokeLater(() -> new ImageDemo());
        }
    }

    其他常用的drawImage重载方法
     

    // 绘制缩放后的图片
    drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
    
    // 绘制图片的一部分
    drawImage(Image img, int dx1, int dy1, int dx2, int dy2, 
              int sx1, int sy1, int sx2, int sy2, ImageObserver observer)

    注意事项

  • 图片路径问题:

    • 如果使用相对路径,要确保图片文件在正确的位置。
    • 建议使用绝对路径或者将图片放在项目的资源目录中。
  • 图片加载可能耗时:

    • 大图片的加载可能需要一些时间,特别是从网络加载时。
    • 考虑使用ImageObserver来监听加载进度,或者在后台线程中加载图片。
  • 透明图片处理:

    • 如果图片有透明部分,记得设置合适的背景色或者使用支持透明的组件。
  • 图片缩放失真:

    • 大幅缩放图片可能会导致失真,可以考虑使用AffineTransform来获得更好的缩放效果。
怎么用Java快速的写游戏? 前言:如果有正在学java的程序员,可来我们的java技术学习扣qun哦:690853020,或者在加文尾加我助理的微信,小编花了近一个月整理了一份非常适合18年学习的java干货,加入就免费送java的视频教程噢!每天晚上会有老师都会在里面直播讲Java知识,从零基础学习到有基础进阶,欢迎初学和进阶中的小伙伴。 本文将在30分钟之内,让你能够使用JAVA语言,独立完成一个小游戏的开发,考虑到每个人的水平不同,我将文章分为以两个部分,利于选择性阅读。 基础部分:窗体显示、图片绘制、图片移动、窗体 阅读详情

相关推荐

PIVlab软件入门:从GUI操作到2D2C粒子测速实战

本文详细介绍了PIVlab软件在2D2C粒子测速中的入门与实战应用。从GUI操作到环境搭建,再到图像预处理和核心参数设置,帮助用户快速掌握这一基于MATLAB的开源工具。通过实际案例和技巧分享,展示了PIVlab在流体力学实验中的高效性和实用性。

weixin_42547431的博客 227

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

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

qq_41932905的博客 6289

Atlas 300I Pro推理卡性能深度测试:对比业界同类产品的能效比与算力表现

本文对昇腾Atlas 300I Pro推理卡进行了深度性能评测,重点对比了其与业界同类产品的能效比与算力表现。实测数据显示,该卡在运行BERT等模型时展现出高达39.6句子/秒/瓦的卓越能效比,电力成本可降低40%以上,同时其达芬奇架构和硬件加速特征检索能力,为高密度在线推理和向量检索场景提供了强大支撑。

weixin_29031161的博客 578

Swing中显示图片

固定大小图片显示 javax.swing.ImageIcon imageIconSource = new ImageIcon("cool.jpg"); java.awt.Image image = imageIconSource.getImage(); Image tempImage = image.getScaledInstance(100,100,Image.SCALE_DEFAUL

hellocdw的专栏 4486

致远OA公文管理模块相关操作

致远oa协同办公系统 公文管理模板 相关操作

weixin_59666050的博客 4271

基于Open Cluster Management构建企业级多Kubernetes集群管理平台OpenClaw

在云原生架构中,Kubernetes已成为容器编排的事实标准。随着业务规模扩大,企业往往需要管理分布在多个云环境或数据中心的Kubernetes集群,这带来了集群管理、应用分发、策略统一和监控运维等复杂挑战。多集群管理技术通过提供统一控制平面,实现了对分布式资源的集中管控,其核心价值在于提升运维效率、保障安全合规并降低管理成本。Open Cluster Management(OCM)作为CNCF沙箱项目,采用Kubernetes原生架构,通过自定义资源定义(CRD)和控制器模式,为构建多集群管理平台提供了标

weixin_33747129的博客 368

Java数字图像处理基础-------Java Swing简单使用,面板显示图片

Java数字图像处理基础-------Java Swing简单使用,面板显示图片 一:简介 利用Java Swing在面板中显示图片,是我们在图像处理中非常重要的一件事情,我们只需要利用Canvas中的paint()方法,调用其中的drawImage即可实现 显示图片有很多的方法,这里就先演示使用Canvas把图片直接画在画板上的方式 二:代码演示 import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import ja

weixin_54963748的博客 3529

SLAM轨迹评估神器evo实战:从GPS到TUM格式的完整转换指南(附Python代码)

本文详细介绍了如何使用evo工具将GPS数据转换为TUM格式,以便进行SLAM轨迹评估。通过Python代码实现GPS到笛卡尔坐标的精确转换,并提供了完整的处理流程和实战案例,帮助开发者轻松完成从原始GPS数据到精确轨迹评估的全过程。特别适用于ORB-SLAM等视觉SLAM算法的性能验证。

weixin_29074295的博客 292

java swing 显示图片_Swing显示图片

JLabel只是将图片以图标的形式显示,所以对内存有一定的限制,如果图片像素过大会出现内存溢出,而JPanel则是将图片“画”在面板上,所以可以使用更大的内存吧。下面是将图片显示在JPanel的关键方法:// 该方法不推荐使用,该方法是懒加载,图像并不加载到内存,当拿图像的宽和高时会返回-1;// image = Toolkit.getDefaultToolkit().getImage(imgPa...

weixin_28724319的博客 5619

affymatrix探针转换 | GPL5175探针对应的基因转换

一般情况下,有一些比较成熟的对应平台的注释数据集的R包。但是这个注释平台,我在Bioconductor上找了一圈都没有找到。只能通过最原始也最可靠的方法,从GEO数据集上去下载这部分的注释文件。以下展示全过程。 我要检查的数据平台是:GPL5157。 数据集的注释集链接为:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL5175 这个注释数据集比较难弄的地方在于,它的基因集注释的不太好。没有比较直接的可供提取的genesample的信息;在ge.

weixin_40640700的博客 7124

PIPE Interface解析之PIPE SerDes/Original架构

PIPI Interface;SerDes架构;Original架构;PHY Tx结构;PHY Rx结构;

weixin_45176819的博客 2606

JavaSwing图形界面编程之Image(一)

package three.day.frame; import java.awt.Color; import java.awt.Frame; import java.awt.Image; import java.awt.Graphics; public class DrawImageFrame extends Frame{ private Image img; p

QQ1130141391的专栏 3410

基于MATLAB的PDT DMR物理层仿真

PDT DMR物理层仿真的目标是评估系统的误码率(Bit Error Rate,BER),以及验证和优化各种调制方案、编码方案和信道模型。下面将介绍如何进行PDT DMR物理层的仿真,并提供相应的MATLAB源代码。通过上述步骤,我们可以进行基于MATLAB的PDT DMR物理层仿真,并评估系统的性能。根据实际需求,我们可以修改仿真参数和添加更复杂的信道模型,以更全面地评估系统性能。最后,我们可以将仿真结果进行可视化和分析。首先,我们需要设置仿真的参数,包括调制方案、编码方案、信道模型和信噪比等。

TechPulseZ的博客 458

Java(opencv)窗体中显示图像

源代码下载: Java(opencv)中显示图像 在textImageIO java项目中添加textImageIO包,在包中添加textImage.java 在tool包中添加tool.java 在窗体中添加一个Jlabel, 在textImage.java中添加一下程序: package textImageIO; import java.awt.EventQueue; imp

spw_1201的博客 5301

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机控制技术及应用

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

【Java Opencv系列】4.2在窗体中显示图像

4.2在窗体中显示图像 本节内容代码下载链接:http://download.youkuaiyun.com/detail/u012343179/9797262 在testOpencv项目的imageIO包中新建ShowImage.java窗体应用 在Design面板中拖一个JLabel控件到窗体中(不会的话可以看1.2节) 切换到source面板,代码如下: package imag

CommissarMa的博客 5449

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JLabel展示文本和图片

JLabel(String text)使用指定的文本创建一个 JLabel 对象。JLabel(Icon image)创建一个具有指定图像的 JLabel 对象。JLabel()创建一个不含图像,不含文本的 JLabel 对象。JLabel 构造方法。

qq_64131715的博客 1382

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

如何在窗体中的某一区域将数组信息以图片形式显示

在使用DEM数据时,通常需要将提取出的高程数组以图像的方式在窗体的某一区域显示出来。

weixin_42428226的博客 414

Java gui图像处理_在 Java GUI 应用程序中处理图像

在 Java GUI 应用程序中处理图像目录要学完本教程,您需要具备以下软件和资源。软件或资源要求的版本版本 7.4 或 8.0简介在应用程序中处理图像是很多 Java 编程初学者遇到的一个常见问题。要访问 Java 应用程序中的图像,标准作法是使用本教程生成的应用程序是一个简单的 JFrame,其中包含一个显示单个图像的 JLabel。创建应用程序选择 "File"(文件)> "New P...

weixin_42524945的博客 952

JAVA 如何将一个图形(以文件存在,如JPG或者GIF)画到窗体的画布中

如何将一个图形(以文件存在,如JPG或者GIF)画到窗体的画布中 其实放置图形到画板中实际就是调用了画板的drawImage函数。其大致思路如下: 首先获取一个ImageIcon对象,这个对象将会从指定的文件中读取相关图象信息,它支持GIF和JPG、BMP等基本图象格式。语法如下

caixiexin的专栏 7463

java 中 url用法_java中Swing中URl怎么使用

package com.ten;import java.awt.Container;import java.net.URL;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.*;public class MyImageIcon extends JFr...

weixin_35888603的博客 270

JAVA项目--------一起来画画

一起来画画---模拟画图程序 搭建项目

qq_42906423的博客 733

java在窗体中显示波形_java显示声音波形图示例

package _tmp;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File;import ja...

weixin_30131185的博客 177

java 打开摄像头_Java(opencv) 窗体打开摄像头

整个程序下载地址:Java(opencv) 窗体打开摄像头,并做一个灰度话处理,以后有关图像处理的和opencv的没有太大的区别在testVideo项目下创建VideoIO包,包下新建ShowVideo.java窗体应用。 直接来看ShowVideo.java程序内容部分:package VedioIO;import java.awt.EventQueue;import javax.swing.I...

weixin_35786770的博客 1142

java画布中让整个图一起移动_JAVA 如何将一个图形(以文件存在,如JPG或者GIF)画到窗体的画布中...

如何将一个图形(以文件存在,如JPG或者GIF)画到窗体的画布中其实放置图形到画板中实际就是调用了画板的drawImage函数。其大致思路如下:首先获取一个ImageIcon对象,这个对象将会从指定的文件中读取相关图象信息,它支持GIF和JPG、BMP等基本图象格式。语法如下:ImageIcon icon=new ImageIcon(GraExp5.class.getResource("1.gif...

weixin_39876450的博客 245

JAVA的绘图功能

JAVA的绘图功能 JAVA的绘图功能非常丰富,绘图包括字体、颜色、图形,以下我们将分技术专题来讲。 一、关于JAVA的绘图机制。 JAVA中的任何一个图形组件,小到文本框、标签,大到一个FRAME,一个DIALOG,都有一个专门负责显示其界面的函数,这个函数名称是固定的:paint,它的原型为: public void paint(Graphics g) { …… } 每当组件大小、位置、组件内容发生变化时,该函数即负责生成新的图形界面显示。由于该

Uoooo的专栏 2万+

第5章 图形程序设计

第10章 图形用户界面程序设计显示窗体创建窗体: Java用户界面工具包简史: Java1.1,包含了一个用于基本GUI程序设计的类库,名为抽象窗口工具包(Abstract Window Toolkit,AWT)基本AWT库将处理用户界面元素的任务委托给各个目标平台上的原生GUI工具包,由原生GUI工具包负责用户界面元素的创建和行为。 但不同平台难以获得一致性体验,且不同平台的AWT用户界面库中存在着不同的bug“一次编写,到处调试” 1996年,Netscape创建了 IFC(Internet Found

静妮子的博客 699
上一篇: Java Swing 窗体添加文字
下一篇: Java 图片的放大和缩小
wu_android
博客等级 码龄10年 94粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值