使用BufferedImage进行渐变色操作

本文主要简述一下如何使用BufferedImage进行渐变色操作。

GradientPaint

java/awt/GradientPaint.java

public class GradientPaint implements Paint {Point2D.Float p1;Point2D.Float p2;Color color1;Color color2;boolean cyclic;//......   
}    

这个是生成渐变色的关键类,当然也有其他的渐变类,比如
java/awt/LinearGradientPaint.java
实例

public static BufferedImage drawGradient(BufferedImage srcImg,

                                         int startX, int startY,int endX, int endY,Color colorFrom, Color colorTo,float opacity) {BufferedImage dstImg = new BufferedImage(srcImg.getWidth(), srcImg.getHeight(), BufferedImage.TYPE_INT_RGB);GradientPaint grad = new GradientPaint(startX, startY, colorFrom, endX, endY, colorTo); //从左上到右下渐变;Graphics2D g2 = (Graphics2D) dstImg.getGraphics();g2.setPaint(grad);g2.fillRect(startX, startY, endX, endY);g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, opacity));g2.drawImage(srcImg, 0, 0, srcImg.getWidth(), srcImg.getHeight(), null);g2.dispose();return dstImg;
}

原理就是先使用GradientPaint画一个渐变色的矩形,然后将原图使用一定透明度覆盖上去,这样就看出渐变。
不足之后的话,就是渐变颜色会偏淡。

欢迎加入学习交流群569772982,大家一起学习交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转载] Java中的字符串处理

参考链接: Java中的StringBuffer appendCodePoint()方法以及示例 JDK8在线Api中文手册 JDK8在线Api英文手册 Java中的字符串处理 1.1 String类的构造函数1.2 字符串的长度1.3 特殊的字符串操作1.3.1 字符串字面值1.3.2 字符串连接1.3.3 字符串和其他数据类型的连…

MySQL循环语句之while循环测试

转自:http://www.nuoweb.com/database/7614.htmlMySQL有循环语句操作,while 循环、loop循环和repeat循环,目前我只测试了 while 循环,下面与大家分享下mysql 操作同样有循环语句操作,网上说有3中标准的循环方式&#x…

[转载] JAVA环境变量配置

参考链接: Java中的变量 安装JDK(1.8) Oracle官网 下载jdk 百度网盘window版本 提取码:o99i win 10环境变量配置 在电脑桌面 右键点击 此电脑 的 属性 选项 选择 高级系统设置 > 然后点击 环境变量 选项 点击 系统变量 下的 新建 按钮&#xf…

[转载] Java中的变量和常量

参考链接: Java中的变量范围 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。 在实际的程序中&#xf…

4.3/4.4 磁盘分区

2019独角兽企业重金招聘Python工程师标准>>> 添加虚拟磁盘 第一步,选择虚拟机中的“设置” 第二步,选择“添加硬盘” 第三步,选择_SCSI (推荐) # 保持默认 第四步,选择“创建新的虚拟磁盘…

[转载] java(三)对象的序列化与static、final关键字

参考链接: Java中的final最终变量 java对象的序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。java中存有Cloneable接口,实现此接口的类都具有被拷贝能力,比new一个对象…

RoboMaster 2017:机器人版的「王者农药」,工程师们的竞技时代

8月6日晚,第十六届全国大学生机器人大赛 RoboMaster 2017机甲大师赛在华润深圳湾体育中心“春茧”体育馆举行,关于这个比赛的盛况已经无需赘述,去年雷锋网参加上届比赛时,报道的是「像看了一场演唱会」,如果用演唱会来…

[转载] 详解Java中的泛型

参考链接: Java中具有泛型的有界类型 1、什么是泛型 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来…

【初学者必读】:前端工程师的知识体系

下图是前端工程师图解: 前端开发的核心是HTML CSS JavaScript。本质上它们构成一个MVC框架,即HTML作为信息模型(Model),CSS控制样式(View),JavaScript负责调度数据和实现某种展现逻…

[转载] Java面试题大全(2020版)

参考链接: Java中的循环 发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 博主已将以下这些面试题整理成了一个…

使用Prometheus监控Cloudflare的全球网络

Matt Bostock在SRECON 2017欧洲大会的演讲中,介绍了如何使用Prometheus实现对CloudFlare分布于全球的架构和网络的监控。Prometheus是一种基于度量进行监控的工具,CloudFlare是一家CDN、DNS和DDoS防御(Mitigation)服务提供商。\\基…

[转载] Java-forEach增强for循环是值传递规则详解

参考链接: Java中的for-each循环 1. 引入 正如Java语法意义,变量的传递只有值传递,虽然变量分为引用变量和基本类型变量,前者更像C中的地址概念。 在学习Lambda表达式的时候,遇到了试图在增强for循环中对原链表元素重…

开始吧

2019独角兽企业重金招聘Python工程师标准>>> 写C三年有余,在技术方面也算小有所成。准备在这里分享一些C进阶、Python、Golang技术文章。 CSDN博客地址: http://blog.csdn.net/godmaycry 以后博客同步更新。 转载于:https://my.oschina.net/u…

[转载] 常用应届生Java开发笔试面试题(更新中)

参考链接: Java中的循环的重要事项 Java开发面试题 Java基础篇Java8大基本数据类型Java的三大特性面向对象如果让你推销一款Java产品,你会怎么推销呢?(java的特点)JVM与字节码JDK与JREStringBuilder和StringBuffer的区…

java/javascript 时间操作工具类

一、java 时间操作工具类 import org.springframework.util.StringUtils;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List;/*** 时间操作工具类** author zwq**/ public …

[转载] java语言程序设计-基础篇

参考链接: Java中的决策制定(if,if-else,switch,break,continue,jump) 第1章,计算机、程序和Java概述 包括【每个java初学者都应该搞懂的问题】 http://blog.csdn.net/haobo920/article/detai…

Exchange server 2013(十四)WSUS部署及组策略设置(2)

我们继续上一节未完的博客,继续我们的WSUS设置。[上一章节标题:Exchange server 2013(十四)WSUS部署及组策略设置(1) 网址:http://1183839.blog.51cto.com/blog/1173839/1182366] 首先单击自动审批,来修改审批规则,也就是说当wsus侦测到新的更…

[转载] Python中的switch语句的替代品

参考链接: Java中的switch语句 Python 中没有 switch语句。 一般用if-else 语句可以替代switch语句,今天学习了使用字典的映射来代替switch语句。Mark一下 day 8; def get_sunday(): return sunday def get_monday(): return monday def get_tues…

“□” 表情无法在 Android 设备显示? 快试试 EmojiCompact 表情兼容库

有了支持库 v26 下的 Compact 库,基于 API 19 及更高版本开发的应用就能获得 emoji 的向下兼容,再也不会看到显示失败的 “豆腐块” 啦。如要使用 EmojiCompact,需要在应用启动时通过下载或者打包字体来初始化库。通过集成小插件,…

[转载] jstl获取Parameter参数及switch使用

参考链接&#xff1a; Java中的字符串使用switch <% taglib uri"/WEB-INF/tld/c.tld" prefix"c" %> param 获取 Parameter参数 <c:choose> <c:when test"${empty param.name}"> Please enter your name. …