java 怎样做出完美动画,(包括透明效果)

【C语言案例】 流星雨动画(Dev-C++项目) 【摘要】本文介绍了一个基于C++和EasyX图形库的流星雨模拟器项目。项目通过加载星空背景图和带透明效果的流星图像,实现了流星随机生成、45度角滑落及生命周期管理的动画效果。关键技术包括:EasyX图形库应用、透明图像处理、双缓冲绘图以及帧率控制。开发环境为Dev-C++ 5.11,需配套安装EasyX图形库。项目包含背景图(starfield.png)和流星图(meteor.png)资源,核心代码通过结构体管理流星属性,使用主循环实现动态效果。编译运行后呈现流畅的流星雨动画,适用于图形编程学习演示。 阅读详情
 <cnmm22动感原创:http://blog.youkuaiyun.com/cnmm22/article/details/44854635>


有一张 gif  图片

我处理了一下,拿到 java 上,直接 g.draw 是这个效果:

 图片

这已经是处理的极限,因为这张图做出来是为白底背景而作,而我的背景是黑底。


但,最终我做出来是这个效果:
 图片

可以看到我更酷了:羽毛的颜色完美融合,而且羽毛泛着荧光。
而且我的羽毛可以左右变换 ,我的羽毛在飘动,而且我的炮弹可以变色!

我是怎样做到的??

要做到这个效果,你不能直接 g.draw gif ,因为gif 色深的问题,他不可能表现出这么完美的透明效果。

我是说,如果你不需要做出荧光的效果,你完全可以先加工好一张gif ,再在 java 里直接draw,很重要的,你在做 gif 的时候,要真正的做到背景透明,以避免像我们上面看到的,为白底做滴gif 在黑底上就不好使了,这时,前期的图片制作很重要,一定要跟美工先沟通好。

但这样,你只能跟我那样完美的泛光效果说拜拜了。

我是怎样做的?首先我把gif 动画的每一帧拆分开来,并且把他们每一张分别处理,处理包括1、魔术棒去除背景色;2、替换跟白色相关的背景色为透明色;3、在Fireworks 下做出荧光的效果,并最终把他们保存成支持更高色深的png格式。当然你也可以在PS下做。

完成后:

图片


现在我说说跟 java 绘制有关的东西,这里涉及至少 2个知识点:

首先,静态引入图片,我先做一个静态代码块。

图片
 
其中 tk 是 static Toolkit tk = Toolkit.getDefaultToolkit();  ,这是常规的做法。为什么要用静态代码块?因为他们在内存中我只需要放一份,而且最好是预先加载。

这里我没有用我在上一篇 
关于awt 不实用第三方类库 实现 图片旋转,变形等处理 <http://blog.youkuaiyun.com/cnmm22/article/details/44628881>   里说到的 MediaTracker ,于是我用了一段代码来预加载,避免游戏开始的时候图片显示不出来:
 
public void draw(Graphics g) {

if (!first) {
for (int i = 0; i < imgs1.length; i++) {
g.drawImage(imgs1[i], -466, -466, null);
}
for (int i = 0; i < imgs.length; i++) {
g.drawImage(imgs[i], -466, -466, null);
}

first = true;
}

这个 first 的作用就看出来了。

好,接下来是重点,怎样显示图片。重点在于处理透明 ,而我也只用短短两段代码完成核心功能:
  图片

其中红色的代码是对图片做透明处理,你可以复制粘贴使用:

((Graphics2D) g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
g.drawImage(imgs1[step], x - 46, y - 59, null);
((Graphics2D) g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); 

这之前要先声明 :float alpha = 0.7f; // 透明度

要做出我那样酷的动画还有几个细节要注意,我这里也一并解释一下:首先,看到我这里的代码分城了两部分,来针对我的炮筒方向不同绘制我翅膀不同的方向,就是最外层的 if。

其次, step++ 完成了所有动画逐帧播放的功能。

但最后发现,这样,翅膀动的太快了,动画不柔顺,所以加入ii,ii=5,表示每播5帧我翅膀才动一下,不过这个肉眼根本感受不出来,最后看到的却是柔顺的效果,这里,ii 的取值要由你的帧速来决定,我是5就OK了,关键是要能想到这样去处理。

最后说说关于炮弹的变色是怎样做到的?

我把炮弹放大,可以看到
图片

炮弹的最外层有一层透明的红色,核心就在于你要使用这样一层透明的颜色,并且把她保存成 png 格式。当很多炮弹重叠的时候,效果就出来了。

好了,结合我上一篇博文 “ 关于awt 不实用第三方类库 实现 图片旋转,变形等处理”,相信你对 java制作游戏和动画又有了一些信心。有人说了,我有CCSprite 我何必这么累??当然我现在说的是java。

Java视频特效处理(超全)/PC版美颜相机-附件资源 立即下载

相关推荐

[前沿技术] AMD FSR 1.0源码解析:EASU算法实现细节与优化策略

本文深入解析了AMD FSR 1.0技术的核心——EASU(边缘自适应空间升频)算法。通过剖析其源码,详细阐述了EASU如何利用12-tap采样窗口、基于Lanczos滤波器的多项式近似以及自适应的边缘检测机制,在无需AI模型的情况下实现高质量图像放大。文章重点揭示了其极致的GPU优化策略,包括寄存器利用、采样优化和避免动态分支,为理解高性能图形算法提供了绝佳范例。

docker7nomad的博客 540

用java做动画

动画效果:在极短时间内,将不同的静态图或草稿(但之间具有一定的连续性),依次交替显示,由此达到动画的效果。 在java中动画效果一般由jframe来玩完成,因为这个类相较frame不需要另外添加其他方法针对闪屏进行预防解决。 做出比较好的动画效果,需要锲合度高的许多图片,再配合代码,生成jrame框进行播放 我事先没有准备图片,所以就手动画了几张拟人草稿,来模拟人的动作 代码部分: Image bg=GemeUtil.getImage("cn/th/thread/img/123.jp...

weixin_50179990的博客 3061

从零实战:模拟Soul/陌陌附近的人接口爬虫(设备指纹·加密逆向·动态代理全解)

在移动互联网流量见顶的今天,LBS(基于位置的服务)社交平台——尤其是Soul和陌陌——依然掌握着海量高活用户的地理位置画像、兴趣标签、在线活跃时段等敏感数据。对于市场调研、流量运营、甚至是城市热力分析而言,“附近的人”接口是一个极具价值的入口。然而,这两款App均采用全参数加密 + 设备指纹风控 + WAF动态防御的三重护城河。直接使用Requests库调用公开API无异于以卵击石。本文将从逆向工程视角出发,完整还原一套可用的附近人信息采集方案,涵盖:抓包与流量分析(绕过SSL Pinning)

2201_76125261的博客 211

用java写一些有趣的特效_有趣的Shader | 打造视频趣味特效

投稿作者:胡阳阳目录1.Shader简单介绍以及入门。2.抖音特效经典滤镜实现(包含灵魂出窍、抖动)。3.用Shader创造一些新鲜有趣的效果吧。1.1 什么是Fragment Shader(片段着色器)?我们把 shaders 和古腾堡印刷术相提并论。为什么这样类比呢?更重要的是,什么是 shader? 如果你曾经有用计算机绘图的经验,你就知道在这个过程中你需要画一个圆,然后一个长方形,一条线,...

weixin_42169971的博客 967

智能车图像处理16-进阶篇8--右环岛状态机与补线

这篇文章主要讲述智能车竞赛中如何判断右环岛并且进行状态补线。

taiyuezyh的博客 1万+

Jetson 平台编译安装 FFmpeg 7.1(支持 Nvmpi + SRT + x265)

摘要: 本文详细介绍了在NVIDIA Jetson平台上编译FFmpeg 7.1并集成关键功能的全过程。通过补丁方式加入Nvmpi实现硬件加速支持,同时编译集成x265编码器和SRT低延迟传输协议。步骤涵盖:1)安装x265编码器;2)配置SRT协议支持;3)编译jetson-ffmpeg的Nvmpi接口;4)定制化编译FFmpeg 7.1;5)验证模块集成情况。最终实现支持硬件编解码、高效HEVC压缩和可靠推流的增强版FFmpeg,为Jetson平台的音视频处理提供完整解决方案。

J。 345

java 图像移动_java – 如何移动图像(动画)?

有一些东西突出……问题”如前所述,您需要为图像绘制过程提供变量参数. g.drawImage(img2,x,y,this);,这将允许您定义图像的绘制位置.虽然你已经实现了Runnable,但你实际上并没有启动任何线程来调用它.这意味着,实际上没有任何改变变量.在你的start方法中,你应该调用类似新线程(this).start()的东西.建议虽然您已将问题标记为Swing,但您使用的是AWT组件...

weixin_29215969的博客 894

【图像去噪】论文复现:CLIP用于图像去噪提升泛化性!CLIPDenoising的Pytorch源码复现,跑通CLIPDenoising全流程,图文结合,网络结构梳理和拆解,对应源码注释!

论文题目:Transfer CLIP for Generalizable Image Denoising —— 用于可泛化图像去噪的转移CLIP。【图像去噪】论文精读:Transfer CLIP for Generalizable Image Denoising(CLIPDenoising)CLIPDenoising理论部分详解见上面对应的论文精读,本文以源码为主,理论部分只是粗略回顾。启发:多看其他领域的文章,分析是否能应用在去噪领域,这是产生idea的要素之一;

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1413

Java语言制作动画

为了使制作出来的满天星更加好看,采用随机数产生,对于产生的位置采用二维数组进行定义、 为了使动画动起来,通过改变横纵坐标的大小来实现(写这篇的目的是为了证明Java不是枯燥无味的) import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.util.Random; import javax.swing.JPanel; /** * 画布类:JPanel * @author Admin.

tianyuqianmo的博客 3689

【Network Management】DCM模块唤醒网络是主动唤醒还是被动唤醒

DCM模块唤醒网络是主动唤醒还是被动唤醒

qq_36056498的博客 1539

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java绘制气球上升的动画

要运行程序,就会看到一个红色的气球在窗口中上升和下降。首先,我们需要定义代表气球位置和大小的成员变量。方法来暂停执行一段时间,以便我们可以看到气球上升和下降的效果。首先,我们需要创建一个窗口来显示绘制的气球。方法来获取窗口的高度,以确保气球不会超出窗口的底部。如果现在运行程序,将会在窗口中显示一个红色的气球。方法中,我们将画笔的颜色设置为红色,然后使用。,即上升气球的速度。的实例,并将其添加到窗口的内容面板中。然后,气球将开始下降。方法中,我们检查气球是否正在上升(即。为了使气球开始上升,我们需要在。

孤冷的刺猬 613

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java完美渐隐图案按钮 Fading Image Button

真是太棒了!纠结了一天,终于将这个wen

不乱于心,不困于情,不念过往,不畏将来。 547

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

零基础教程:用Geyser资源包转换工具实现跨平台材质完美适配

Geyser资源包转换工具是Minecraft跨平台游戏体验的关键技术,通过智能算法将Java版材质包自动适配到基岩版,让玩家在不同设备上享受一致的视觉盛宴。**Geyser资源包转换**功能彻底解决了版本兼容难题,新手也能轻松掌握。 ## 🎯 为什么要使用Geyser资源包转换? **平台差异痛点** - Java版材质无法直接在基岩版使用 - 手动转换耗时且容易出错 - 材质尺寸和格式要

gitblog_00125的博客 459

IE6下使png透明的完美解决方式(续)

原文出处: http://www.javatang.com/archives/2010/07/19/1736428.html作者: Jet Mah from Java堂声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明! 自从上次介绍一种在IE6下使png透明的方式之后,今天又遇到一种更加完美的解决方案 DD_belatedPNG,详细的使用方法大家可以...

Java Tang 130

车载开机动画定制指南:从系统原理到DIY实战

开机动画是嵌入式系统启动流程中的重要视觉环节,其本质是在系统引导完成后、用户界面完全启动前播放的一段多媒体内容。从技术原理上看,它紧密依赖于显示驱动初始化、帧缓冲区操作以及轻量级图形渲染服务。在车载信息娱乐系统中,一个精心设计的开机动画不仅能提升用户体验和品牌质感,更成为连接底层硬件、系统启动时序与上层应用的关键技术实践点。对于汽车电子爱好者、车载系统开发者而言,深入理解其背后的系统启动流程、资源打包规范与性能调优方法,是掌握嵌入式图形显示与多媒体处理的绝佳切入点。本文聚焦于车载场景,解析如何从零制作一个兼

weixin_33827731的博客 397

java freemarker word_Java 用Freemarker完美导出word文档(带图片)(示例代码)

Java 用Freemarker完美导出word文档(带图片)前言最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题。准备材料1.word原件 2.编辑器(推荐Firstobject free XML editor)实现步骤1.用Microsoft Office Word打开word原件;2.把需要动态修改的内容替换成**...

weixin_35662019的博客 458

如何把 REA 安全接入你的 AI Agent:setup 命令全流程拆解

REA(Reverse Engineer Anything)是一套面向 AI Agent 的逆向工程工具链,覆盖从应用行为观察到原生二进制分析的完整链路。它的 `setup` 命令负责把本地 MCP 服务(一种让 AI 调用外部工具的本地协议)接进你的编程助手。本文按真实操作顺序走一遍完整流程:批准之前先看到全部文件路径与命令,写入之前先留存备份,写入之后再读回验证,全程可随时退出、随时复查。

gitblog_00639的博客 353

Hypothesis 对计算机科学研究者的价值:从 QuickCheck 到 Conjecture 引擎的探索

Hypothesis 是 Python 生态中广泛使用的 property-based testing(属性测试)库。本文源自项目作者 David MacIver 于 2017 年撰写的技术长文(见 [website/content/2017-03-09-hypothesis-for-researchers.md](https://link.gitcode.com/i/398f76a1f2b2e5

gitblog_00969的博客 617

IE6不支持PNG图片透明效果的完美解决方案(完善版)

可怜的IE6,不支持PNG图片透明,这已经是其众多“BUG”中,不是那么显眼的一个,但也是让部分人头痛的一个了。(今天在机房那破机器上IE6忘了抓图了,现在想给大家看效果也难啊。)发个PNG大家看看。   如果用IE6的朋友,请在下面回复截个图!谢谢啦。[attach]641886[/attach]想查看区别的,请到这个页面http://www.54caizi.org/demo/enablePng...

weixin_33806914的博客 129

IE6下使png透明的完美解决方式

原文出处: http://www.javatang.com/archives/2010/07/08/4615417.html作者: Jet Mah from Java堂声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!     众所周知,在IE6下面无法使用png透明的效果,虽然IE6的市场份额逐渐下滑,但是在国内依然保持最旺盛的占有率,这一点...

Java Tang 168

Cap 免费开源录屏工具:从录制到分享链接的完整教程

在群里用文字描述一个 bug 的复现路径,往往要来回追问三四轮;对着同事的屏幕口头讲产品功能,录下来留给没参会的人更是常事。Cap 是一款免费开源的录屏工具,把屏幕、摄像头和麦克风一起收进一条视频,停下录制的那一刻就能拿到一个可以直接发人的分享链接。这一篇带你走完它的主流程、上手方式和几个真实用法。 ## 核心体验:从打开 Cap 到拿到分享链接 这条主流程没有分支,四步走完手里就是一个链接。

gitblog_00081的博客 471

终极VAP源码解读:从MP4解析到OpenGL渲染的全链路优化指南

VAP(Video Animation Player)是企鹅电竞开发的高性能动画播放方案,通过创新的视频透明度实现技术,完美结合了MP4的高压缩率与硬件解码优势,同时支持iOS、Android和Web多平台。本文将深入剖析VAP从MP4解析到OpenGL渲染的完整技术链路,带你了解如何实现高效、炫酷的动画播放体验。 ## 🌟 VAP核心优势解析 相比传统动画方案,VAP在文件大小、解码性能和

gitblog_00012的博客 757

3步搞定HTML转PDF:OpenPDF让网页完美变身专业文档

还在为HTML内容无法优雅转换为PDF而头疼吗?Java开发者常常面临网页样式丢失、布局错乱、中文乱码等难题。OpenPDF-html模块基于成熟的Flying Saucer渲染引擎,提供了一套完整的HTML5和CSS3到PDF的转换方案,让您轻松实现网页内容的专业级PDF输出。 ## 为什么HTML转PDF总是出问题? 传统方案常常遇到样式兼容性差、布局错位、图像失真等痛点。浏览器渲染的网页

gitblog_00303的博客 648

java jpanel 透明背景_JLayeredPanes中的透明JPanel

我希望JPanel透明或完全不可见(不像panel.setVisible(false),但更像是opacity = 0.0f),然后将其放入JLayeredPane,以使底层可见 .你知道问为什么 . 我需要这个使用像BorderLayout这样的Layouts中的构建,因为我不想制作自己的布局等等 .我接下来尝试的是首先实现一个透明的JPanel,通过这样做或多或少容易:public class...

weixin_39608559的博客 513
上一篇: >>,<< 是什么意思?
下一篇: 多个构造函数之间怎样相互引用??
cnmm22
博客等级 码龄12年 21粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值