java图片循环_java – 如何实现无限图像循环?
您可以通过多种方式实现此目标,但基本前提是,您需要某种滚动偏移来确定基本图像的开始.
然后,您需要在它之前和之后填充区域(如果图像小于可用高度),直到空间被填满.
以下示例使用javax.swing.Timer以给定量更新偏移量.然后,paintComponent方法渲染其前后的所有空间,包括当前图像位置.
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class ScrollingBackground {
public static void main(String[] args) {
new ScrollingBackground();
}
public ScrollingBackground() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new BackgroundPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class BackgroundPane extends JPanel {
private BufferedImage bg;
private int yOffset = 0;
private int yDelta = 4;
public BackgroundPane() {
try {
bg = ImageIO.read(new File("Background.png"));
} catch (IOException ex) {
ex.printStackTrace();
}
Timer timer = new Timer(40, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
yOffset += yDelta;
if (yOffset > getHeight()) {
yOffset = 0;
}
repaint();;
}
});
timer.start();
}
@Override
public Dimension getPreferredSize() {
return bg == null ? new Dimension(200, 200) : new Dimension(bg.getWidth(), bg.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (bg != null) {
Graphics2D g2d = (Graphics2D) g.create();
int xPos = (getWidth() - bg.getWidth()) / 2;
int yPos = yOffset;
while (yPos > 0) {
yPos -= bg.getHeight();
g2d.drawImage(bg, xPos, yPos, this);
}
yPos = yOffset;
while (yPos < getHeight()) {
g2d.drawImage(bg, xPos, yPos, this);
yPos += bg.getHeight();
}
g2d.dispose();
}
}
}
}
你可以通过使用后备缓冲区和/或subImage来乐观这一点,但是你明白了……
java图片循环_java – 如何实现无限图像循环?相关推荐
- java图片降噪_Java基于opencv实现图像数字识别(四)—图像降噪
Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...
- java 图片水印_JAVA实现图片水印
一.JAVA图片水印实现原理 1.1.JAVA图片水印实现思路 1.创建缓存图片对象. 2.创建Java绘图工具对象. 3.使用绘图工具对象将原图绘制到缓存图片对象. 4.使用绘图工具将水印(文字/图 ...
- java 图片 缩略图_java 图片缩略图的两种方法
最近网上看到两种不同的java图片缩略图的绘制方案 第一种,使用Graphics().drawImage按照一定的比例重新绘制图像. package com.image.suoluetu; impor ...
- java图片拷贝_java图片拷贝
请选择上传的图片或文件: 可以看到,我们将...之后,我们就来编写这个 servlet--UpLoad.java 复制代码 代码如下: package load; import java.io.Fil ...
- java图片马赛克_java实现图片缩放、旋转和马赛克化
本文是作者结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化. 不多说,上代码: package deal; import java.awt.Color; import jav ...
- java 图片旋转_Java实现图片旋转、指定图像大小和水平翻转|chu
本文实例为大家分享了Java实现图片旋转.指定图像大小.水平翻转,供大家参考,具体内容如下 package com.zeph.j2se.image; import java.awt.Graphics2 ...
- java 图片 黑白_java – 将图像转换为黑白(不是灰色标尺)
你好我将图像从彩色转换为纯黑色和白色,结果是一个黑暗的图像.我没理由.以下是我的代码,它受到SO上其他代码的启发. 任何指导都会有所帮助. BufferedImage coloredImage = I ...
- java 图片有损压缩_java - 用有损jpeg压缩多页tiff图像 - 堆栈内存溢出
将图像从16位减少到8位. 假设您有一个byte []变量plane16,在其中您有图像的所有像素. 注意 :我的byte [] plane16从16位图像获取数据,但是byte为8bit = 1by ...
- java图片色差_java – JPEG图像的颜色错误
我现在找到一个解决方案,这是工作,至少如果我的结果图像也是一个JPEG: 首先我读取图像(从字节数组imageData),最重要的是,我还读取元数据. InputStream is = new Buf ...
- java 图片合并_Java如何实现图片的叠加与拼接操作
关于Java实现图片的叠加与拼接的文章网络上确实很多,碰巧小编开发工作中也遇到这些问题,就做了简要的梳理,作为笔记以备不时之需. Java对图片的处理主要使用的是BufferedImage类. Buf ...
最新文章
- ASP.NET Core 上传多文件 超简单教程
- python编程入门到实践 百度云-python网络爬虫从入门到实践pdf
- CSS3 @font-face 规则
- Spring boot的Spring MVC扩展功能
- Segment Model.
- Android ActionBarSherlock使用教程
- 人类社会发明的第一台计算机是什么,第二周第一课概述计算机
- Linux的cron和crontab
- 将windows c盘安装在linux,将WindowsC盘hda1安装在Linux文件系统的/winsys目录下,命令是()。...
- php curl登录,php curl保存登录信息 模拟登录
- iOS:关于UIView切角的两种实现方式
- 【推荐】数据科学中的非数学特征提取方法
- 计算机无法安装应用,电脑没法安装软件?教您解决电脑没法安装软件
- 【“您未被授权查看该页”的原因和解决办法】
- 确认OHS版本的方法
- cloudera-repos 地址
- AutoCAD Civil3D 2023安装图文教程及下载
- S3C2440 I2C实现
- 机房环境监控系统的作用,环境与设备监控系统的作用
- 小程序碰上浏览器搜索入口!
热门文章
- 关于HP C7K的firmware management中的power policy理解
- RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (二)
- ping命令两种返回信息的区别
- 【狂神说Redis】总集篇
- crossentropyloss 输入_Pytorch常用的交叉熵损失函数CrossEntropyLoss()详解
- 去掉a标签下划线_编辑器、HTML基础、编码、基础标签
- ARM开发7.3.1 基础实训( 1 ) 单个按键的输入系统设计( 1 )--LPC21XX
- mybatis源码分析详解
- springcloud feign负载均衡_SpringCloud学习笔记(2)——Ribbon
- 数据中心淘汰服务器,浅谈数据中心危机严重的程度