iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >java指南之使用图形:使用图像(转)
  • 444
分享到

java指南之使用图形:使用图像(转)

2023-06-03 05:06:41 444人浏览 薄情痞子
摘要

使用图像 这是一个图像: 下面的几页将提供使用图像所需要的详细资料,你将学会如何加载、显示和操纵它们。---------------------------------------------------------------------

使用图像
这是一个图像:



下面的几页将提供使用图像所需要的详细资料,你将学会如何加载、显示和操纵它们。



--------------------------------------------------------------------------------
等等!: 虽然这节描述的apijdk 1.1 和 Java 2 (JDK 1.2)都是有效的,但是我们还是推荐你使用Swing内建的 icon 支持来代替。如果Swing的图标不能满足要求,而且你为Java 2写程序,那么考虑使用Java 2D API,它在 2D 图形 教材中有描述。
--------------------------------------------------------------------------------

图像使用的支持分布于java.applet, java.awt, 和 java.awt.image 包中。每一个图像都用一个java.awt.Image 对象表示。除了Image 类外,java.awt 包提供了其它的基本的图像支持,例如Graphics 类的drawImage 方法,Toolkit 对象的getImage 方法以及MediaTracker 类。在java.applet包中,Applet 类的getImage 方法使得可以很容易的使用URL加载图像。最后,java.awt.image包提供可用于创建、操纵和观察图像的接口和类。

加载图像
AWT可以很简单的加载两种格式的图像: GIF 和 JPEG。Applet和Toolkit 类提供了getImage 方法可以使用那两种格式。像这样使用:
myImage = getImage(URL); //只能在Applet 子类里
或者
myImage = Toolkit.getDefaultToolkit().getImage(filenameOrURL);

getImage 立即返回,因此你不必等待图像加载完而可以直接在你的程序中执行其它的操作。虽然这可以提高性能,但是有效程序需要更多的控制或者有关图像的更多信息。你可以通过使用MediaTracker类或者实现ImageObserver接口中定义的imageUpdate方法跟踪图像的加载。
这一节也将告诉你如何轻松的使用MemoryImageSource类创建图像。

显示图像
通过传递到paintComponent方法的Graphics对象可以很容易的显示图像。你简单的在Graphics 对象上调用一个drawImage方法就可以。例如:
g.drawImage(myImage, 0, 0, this);

这一节解释drawImage的四种形式,其中的两种可以进行图像的缩放。像getImage一样,drawImage 也是异步的,即使图像还没有被全部加载或绘制也立即返回。

加载图像
这一节描述如何得到一个图像对应的Image 对象。只要图像数据在一个 GIF 或者 JPEG 格式文件里面而且你知道它的文件名或者URL,那么从它得到一个Image 就很简单:只要使用Applet 或者 Toolkit 中的一个的getImage方法就就可以。getImage 方法立即返回,不检查图像数据是否存在。实际的图像加载通常直到程序第一次绘制图像时才进行。
对于很多程序,这个不可见的后台加载工作工作得很好。否则需要跟踪图像的加载过程。这一节解释如何使用MediaTracker 类和ImageObserver 接口达到目的。


--------------------------------------------------------------------------------
注意: ImageIcon 类自动使用一个MediaTracker 加载自己的图像。
--------------------------------------------------------------------------------

最后,这节告诉你如何使用一个像MemoryImageSource这样的类轻松的创建一个图像。

使用getImage方法
这节首先讨论Toolkit 的getImage方法,然后才是Applet 的getImage 方法。
Toolkit 明了两个getImage 方法:

Image getImage(URL url)
Image getImage(String filename)
下面是使用Toolkit的getImage 方法的几个例子。虽然每个Java程序和applet都可以使用这些方法, 但是 applets受通常的安全限制。特别的,不被信任的applets 不能成功的为getImage指定一个文件名,因为不被信任的applets不能从本机文件系统加载数据。你可以从 安全限制找到有关不被信任的applets的限制方面资料.

Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image1 = toolkit.getImage("imageFile.gif");
Image image2 = toolkit.getImage(
new URL("https://cache.yisu.com/upload/infORMation/20200703/145/53375"));

Applet类提供两个getImage 方法:


Image getImage(URL url)
Image getImage(URL url, String name)
只有applets 可以使用Applet 的getImage 方法。而且Applet 的getImage 方法只有在完整的背景(AppletContext)下才能工作。因为这个原因,这些方法在构造方法或者在一个声明一个实例变量的申明里面不能工作。你应该从一个像init这样的方法里面调用getImage。

下面的代码范例演示了如何使用Applet 的code>getImage 方法。参考 使用AWT创建一个GUI 得到getCodeBase和getDocumentBase 方法的解释。

//在Applet子类的一个方法里:
Image image1 = getImage(getCodeBase(), "imageFile.gif");
Image image2 = getImage(getDocumentBase(), "anImageFile.jpeg");
Image image3 = getImage(
new URL("Https://cache.yisu.com/upload/information/20200703/145/53375"));

请求和跟踪图像加载: MediaTracker 和 ImageObserver
你可以以两种方法跟踪图像加载: MediaTracker 类和 ImageObserver 接口。 MediaTracker 类对于很多程序是足够的。你仅仅需要创建一个MediaTracker 实例,告诉它跟踪一个或者多个图像,然后如果需要的话向MediaTracker 查询那些图像的状态。在 提高图像动画的外观和性能里面有一个范例的解释。
动画范例展示了MediaTracker的两个特别有用的特性:请求一组图像数据的加载并且等待它们完成加载。请求一组图像数据加载可以使用checkID和checkAll 的带一个布尔参数的形式。将参数设置为 true可以开始加载任何还未被加载的图像。或者你可以请求加载图像然后使用waitForID和waitForAll方法等待。

ImageObserver 接口可以运行你进行比MediaTracker更紧密的跟踪。 Component 类使用它,因此组件在它们要显示的图像被加载后进行重新绘制。为了使用 ImageObserver 接口,你需要实现ImageObserver的 imageUpdate 方法并且确保实现的对象被注册为一个图像观察器。通常,这个注册发生在你为drawImage方法指定一个ImageObserver,就像在稍后一节描述的那样。 imageUpdate 方法在图像的信息可见的任何时候被调用。

如果你浏览MediaTracker API 文档,你可能会注意到 Component 类定义了两个看上去有用的方法: checkImage 和 prepareImage。MediaTracker 类在很大程度上使得这些方法是不必要的。

用MemoryImageSource创建图像
在像 MemoryImageSource 类这样的图像生产者的帮助下,你可以从你的幸手涂鸦上构造图像。下面的代码范例打算创建一个100x100的图像表示一个沿X轴的从黑到蓝的渐变和沿Y轴的从黑到红的渐变。
int w = 100;
int h = 100;
int[] pix = new int[w * h];
int index = 0;
for (int y = 0; y < h; y++) {
int red = (y * 255) / (h - 1);
for (int x = 0; x < w; x++) {
int blue = (x * 255) / (w - 1);
pix[index++] = (255 << 24) | (red << 16) | blue;
}
}
Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));

显示图像
下面的代码在组件区域的左上角(0, 0)以原始大小显示一个图像:
g.drawImage(image, 0, 0, this);

下面的代码在坐标(90, 0)处显示一个被缩放为300象素宽62象素高的图像:
g.drawImage(myImage, 90, 0, 300, 62, this);

下面的代码片断展示了一个applet加载一个图像并且两次显示它,使用上面你看到的两个片断。你可以在 ImageDisplayer.java找到完整的的代码。


这个图片是该applet的GUI。要运行那个applet,单击图片。该applet将在一个新浏览窗口显示。

Graphics 类声明了下面的 drawImage 方法。它们都返回一个boolean值,虽然这个值很少被使用。如果图像图像已经被完全加载并且因此被完全绘制,返回值是true;否则,返回值是false。

boolean drawImage(Image img, int x, int y, ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
boolean drawImage(Image img, int x, int y, Color bGColor, ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
drawImage 方法有下面的参数:
Image img
需要绘制的图像。
int x, int y
图像左上角坐标。
int width, int height
图像的宽度和高度(单位为象素)。
Color bgcolor
图像下面的颜色。如果图像包含透明象素时这会有用,图像将在指定颜色背景下显示。
ImageObserver observer
一个实现ImageObserver 接口的对象。它将该对象登记为一个图像观察者,因此当图像的任何新信息可见时它被通知。大多组件可以简单的指定this。
组件可以指定this作为图像观察者的原因是Component 类实现了ImageObserver 接口。当图像数据被加载时它的实现调用repaint方法,这通常是你所期望的。
drawImage 方法只要要显示的图像数据已经加载完就返回。如果你要确保drawImage只绘制完整的图像,那么你需要跟踪图像的加载。参考 上一页获取跟踪图像加载的信息。[@more@]

--结束END--

本文标题: java指南之使用图形:使用图像(转)

本文链接: https://www.lsjlt.com/news/233159.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java指南之使用图形:使用图像(转)
    使用图像 这是一个图像: 下面的几页将提供使用图像所需要的详细资料,你将学会如何加载、显示和操纵它们。---------------------------------------------------------------------...
    99+
    2023-06-03
  • 超全!Python图形界面框架PyQt5使用指南!
    常见GUI框架 PyQt5:Qt是一个跨平台的 C++图形用户界面库。QT一度被诺基亚拥,后出售给芬兰的软件公司Digia Oyj。PyQt5是基于Digia公司Qt5的Python接口,由一组Python模块构成。PyQt5本身拥有超过6...
    99+
    2023-05-14
    Python 图形界面 PyQt5
  • C++图形编程工具链选择与使用指南
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • 如何使用纯CSS实现圆形图像?
    小编给大家分享一下如何使用纯CSS实现圆形图像?,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   SS可以实现网页中的很多效...
    99+
    2024-04-02
  • 使用c++实现OpenCV绘制旋转矩形图形
    目录功能函数测试代码测试效果  功能函数 // 绘制旋转矩形 void DrawRotatedRect(cv::Mat mask,const cv::RotatedRe...
    99+
    2024-04-02
  • html如何使用图像地图
    这篇文章主要介绍了html如何使用图像地图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 图像映射使您可以在图像上定义像超级链接一样的热点...
    99+
    2024-04-02
  • Java常用类之System类的使用指南
    目录1.System类1. arraycopy(…)方法2. currentTimeMillis()方法3. gc()方法4. exit(int status)方法2....
    99+
    2024-04-02
  • Java图像处理之RGB调色面板怎么使用
    本篇内容主要讲解“Java图像处理之RGB调色面板怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java图像处理之RGB调色面板怎么使用”吧!一、概述因为我们知道颜色是由R、G、B、三种...
    99+
    2023-07-02
  • PyQT5: 构建图形用户界面的Python指南
    PyQt5是一个Python绑定的跨平台C++库,用于创建丰富的图形用户界面(GUI)。它是Qt库的Python接口,Qt库由Qt公司开发,用于开发GUI程序,也称作应用程序框架。在此,我们将详细介绍...
    99+
    2023-09-06
    python qt 开发语言
  • C#如何使用OpenCV剪切图像中的圆形和矩形
    这篇文章主要介绍“C#如何使用OpenCV剪切图像中的圆形和矩形”,在日常操作中,相信很多人在C#如何使用OpenCV剪切图像中的圆形和矩形问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何使用OpenC...
    99+
    2023-06-07
  • unplugin-svg-component优雅使用svg图标指南
    目录前言unplugin-svg-component效果图VueReact结语前言 现如今, 项目中的小图标往往会使用 svg 的方式来做, 许多 svg 插件供我们选择, 比如说...
    99+
    2023-03-13
    unplugin-svg-component图标 unplugin svg
  • java 使用ImageIO.write如何生成jpeg图像
    本篇文章给大家分享的是有关java 使用ImageIO.write如何生成jpeg图像,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java 使用ImageIO.writer从...
    99+
    2023-05-31
    java imageio.writer age
  • Python图像处理之PIL库怎么使用
    本篇内容主要讲解“Python图像处理之PIL库怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python图像处理之PIL库怎么使用”吧!PIL库的使用要点:PIL库是一个具有强大图像处...
    99+
    2023-07-02
  • 如何使用Canvas绘制图形图文
    这篇文章主要讲解了“如何使用Canvas绘制图形图文”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Canvas绘制图形图文”吧!HTML5火的正热,...
    99+
    2024-04-02
  • JPA 之 QueryDSL-JPA 使用指南
    Querydsl-JPA 框架(推荐) 官网:传送门 参考: JPA整合Querydsl入门篇SpringBoot环境下QueryDSL-JPA的入门及进阶 概述及依赖、插件、生成查询实体 Querydsl支持代码自动完成,因为是纯Java...
    99+
    2023-08-18
    java mybatis spring
  • JPA 之 Hibernate EntityManager 使用指南
    Hibernate EntityManager 专题 参考: JPA – EntityManager常用API详解EntityManager基本概念 基本概念及获得 EntityManager 对象 基本概念 在使用持久化工具的时候,一般都...
    99+
    2023-08-16
    hibernate java entityManager jpa
  • vue使用jsMind思维导图的实战指南
    目录前言开始安装使用实例修改隐藏和打开 滑动条有问题jsmind.menu.js 中 增加 菜单点击事件自定义每一个节点样式根据节点数据变化的节点鼠标右键位置每个节点对应不同的菜单放...
    99+
    2023-01-16
    vue画思维导图 vue思维导图 vue jsmind思维导图
  • SQLyog —— 图形化工具使用
    SQLyog下载链接: 点击跳转  提取码:520H          在这一篇内容MySQL数据库 —— 常用语句当中讲到关于MySQL数据库命令的基本使用,这一篇是关于SQLyog数据库图形化工具的内容,先进行安装演示后在通过SQ...
    99+
    2023-09-30
    数据库
  • Vue3中级指南之如何在vite中使用svg图标详解
    目录前言vite-plugin-svg-icons安装使用如何在组件中使用创建SvgIcon组件icons目录结构全局注册组件页面使用获取所有 SymbolId总结前言 svg图片在...
    99+
    2024-04-02
  • GoJs图形绘图模板Shape怎么使用
    这篇“GoJs图形绘图模板Shape怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“GoJs图形绘图模板Shape怎么...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作