java Graphics2d消除锯齿,使字体平滑显示
Java 2D API 提供的文本处理功能进行美化。Java 2D API 的文本功能包括:
- 使用抗锯齿处理和微调(hinting)以达到更好的输出质量
- 可以使用系统安装的所有字体
- 可以将对图形对象的操作(旋转、缩放、着色、剪切等等)应用到文本上。
- 支持向字符串添加内嵌属性(如字体、尺寸、深浅,甚至图像)
- 支持双向文本(启用从右到左的字符顺序,就象您在阿拉伯语和希伯来语中可能遇到的一样)
- 第一光标和第二光标能够浏览同时包含从右到左和从左到右字符顺序的文本。
- 先进的字体度量功能,超过旧的 java.awt.FontMetrics 类中的相应功能
- 排版功能可以实现单词换行和调整多行文本
这个 API 的核心是由 java.awt.Graphics2D 类提供的,该类是 java.awt.Graphics 的一个子类。API 的其它部分由 java.awt 层次结构中的其它包提供,包括 java.awt.color 、 java.awt.font 和 java.awt.geom 。
画线平滑:
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
- g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_DEFAULT);
画线恢复到默认状况:
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
- g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_PURE);
Graphics2d拥有比graphics更为强大的画图方法
所以在画图时,我们要使用的画笔是Graphics2D。
但是,Graphics2D直接拿来画,效果是一样的,还是有锯齿(原因:像素太小导致)。
所以我们要对它设置各种呈现算法。
设置呈现算法语句:
BufferedImage img=new BufferedImage(什么什么什么);
Graphics2D g2 = img.createGraphics();//获得一个Graphics2D对象
【设置抗锯齿属性】
//消除文字锯齿
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
//消除画图锯齿
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
在上面的【设置抗锯齿属性】中,粗体你照写就可以了,细的是可以替换的
消文字锯齿:RenderingHints.KEY_TEXT_ANTIALIASING
消绘图锯齿:RenderingHints.KEY_ANTIALIASING
选你需要的填进去就可以了,然后就可以绘图消锯齿了。
实例代码如下:
public class CompoundTileTools {
public static void main(String[] args) {
int width = Constants.s_width_gps;
int height = Constants.s_height_gps;
// 创建BufferedImage对象
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取Graphics2D
Graphics2D g2d = image.createGraphics();
// ---------- 增加下面的代码使得背景透明 -----------------
image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = image.createGraphics();
// ---------- 背景透明代码结束 -----------------
//消除锯齿
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 画图
g2d.setColor(new Color(255, 0, 0));
// 指定绘制线的宽度(多粗)
g2d.setStroke(new BasicStroke(2));
// 指定绘制线的起点和终点
g2d.drawLine(412, 253, 392, 252);
// 释放对象
g2d.dispose();
// 保存文件
try {
ImageIO.write(image, "png", new File("D:/test/test1.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
java Graphics2d消除锯齿,使字体平滑显示的更多相关文章
- CSS3中字体平滑处理和抗锯齿渲染
在围观Drupal官方主题的时候,发现了一个有意思的非标准CSS选择器-webkit-font-smoothing,于是上手把玩了一番.如何使用css3字体平滑显示呢 要知道,W3C对CSS中字体的抗 ...
- thinkphp使后台的字体图标显示异常
thinkphp使后台的字体图标显示异常 相似问题 1.thinkPHP的这些图标都不显示了-CSDN论坛https://bbs.csdn.net/topics/391823415 解答: 发现在别的 ...
- 【Android LibGDX游戏引擎开发教程】第07期:中文字体的显示和绘制(上)
在字体的显示和绘制中,Libgdx的作者(Mario Zechner,美国人)给我们提供了一个非常好用的工具 ——Hiero,那么下面就来看看它具体的使用方法. 一.Hiero工具的使用 1.Hier ...
- 使用注册表优化终端、编辑器的中英字体混合显示,如「Consolas + 雅黑」「Monaco + 雅黑」
在终端.cmd.编辑器中偶尔会有中文字符出现,Windows下默认的点阵字体「宋体」和等宽英文字符放在一起非常违和.一个解决方法是下载混合字体,比如「Consolas + YAHEI hybrid」, ...
- JAVA爬虫对font-face字体反爬虫解密
1.参考博客 https://www.jianshu.com/p/9975de57b0ce https://blog.csdn.net/litang199612/a ...
- 点击input时,里面默认字体消失显示
点击input时,点击input里面默认字体消失显示: <input type="" name="" id="" value=&quo ...
- SpriteBuilder添加的TrueType字体未显示在log中的原因分析
按照书上的说法,在SpriteBuilder中添加的TrueType字体名称会在枚举字体方法显示的log中出现.但是运行程序后没有在log中发现对应的字体名称. 因为该字体是例子中作者制作的,所以字体 ...
- Kali Linux Wine32英文字体不显示问题
Kali Linux Wine32英文字体不显示问题 Kali Linux提供了Wine32工具.在运行Wine32后,界面可以显示中文,但不能显示英文文字.英文文字均显示为方块.这是由于缺少对应的 ...
- v-charts x轴字体斜显示
如下图,因为X轴内容太多,放不下,插件默认间隔显示需求:X轴内容要全部显示出来(只有斜显示或固定宽多余的用省略代替,本来需要就是想显示全部内容,所以只能取斜显示的方案) 先看看v-charts的文档: ...
随机推荐
- php 字母和数字验证码
//验证码 <?php //实现简单的验证码 //session_start session_start(); //画布 $image = imagecreatetruecolor(100, 3 ...
- 邮件发送异常, [Errno 110] Connection timed out
邮件发送异常, [Errno 110] Connection timed out SMTP 服务地址(华东 1): smtpdm.aliyun.com SMTP 服务地址(新加坡):smtpdm-a ...
- 在Mac OS X使用Elasticsearch的基本流程
这篇日志的目的非常easy,就是记录一些主要的流程.要在OS X上使用Elasticsearch,事实上非常easy,在这里:https://www.elastic.co/downloads/elas ...
- [今日干货]一个吸粉效果也不错的APP
最近陌陌被封很厉害,今天给大家分享一个吸粉效果也不错的APP——悦跑圈,日吸几百粉没问题~ 1.首先下载APP悦跑圈,用手机号码注册. 2.改写资料和头像,最好用一个女性头像,真实点的,不是网图,增加 ...
- [动态规划]UVA10285 - Longest Run on a Snowboard
Problem C Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 sec ...
- 基于视觉反馈的步进电机X-Y平台控制
关键词:步进电机.XY平台.视觉反馈 用途:工业自动化 文章类型:原理介绍.随笔纪念 @Author:VShawn(singlex@foxmail.com) @Date:2017-05-01 @Lab ...
- 在PC上调试微信手机页面的三种方法
场景 假设一个手机页面,开发者对其做了限制,导致只能在微信客户端中打开.而众所周知手机上非常不利于调试页面,所以需要能在电脑上打开并进行调试.这里针对常见的三种页面做一下分析,一一绕过其限制,(当然不 ...
- go——类型的本质
在声明一个新类型之后,声明一个该类型的方法之前,需要先回答一个问题:这个类型的本质是什么. 如果给这个类型增加或删除某个值,是要创建一个新值,还是要更改当前的值? 如果是要创建一个新值,该类型的方法就 ...
- go——标准命令
Go本身包含大量用户处理Go程序的命令和工具. 1.子命令 go命令的子命令:build:用于编译指定的代码包或Go语言源码文件. 命令源码文件会被编译成可执行文件,并存放到命令执行的目录或指定目录下 ...
- virtualenv使用
virtualenv安装不同版本的python 来自为知笔记(Wiz)