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学习之有用的资源 总结
1.php之道,http://laravel-china.github.io/php-the-right-way/ 2.改变php变成效率 http://www.php100.com/html/duj ...
- Tornado实战
抽屉之Tornado实战(1)--分析与架构 抽屉之Tornado实战(2)--数据库表设计 抽屉之Tornado实战(3)--注册 抽屉之Tornado实战(4)--发帖及上传图片 抽屉之Torna ...
- 转!! 关于jsp编码设置 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
我们在写jsp页面的时候经常会在页面头部使用如下代码: <%@ page language="java" contentType="text/html; chars ...
- spring 实现定时任务
spring实现定时任务超级简单.比使用quartz简单,比使用timer强大.如下是一个简单的springboot任务,启用了定时任务 @SpringBootApplication@Componen ...
- 浅谈 Python 的 with 语句(转)
add by zhj: 上下文管理器是对try-except-finally的再封装而已,只能算是优化代码这一级别的feature 原文:http://www.ibm.com/developerwor ...
- 48dp rhythm
- [动态规划]UVA10285 - Longest Run on a Snowboard
Problem C Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 sec ...
- Ionic上滑刷新
上拉加载用的是ionic控件ion-infinite-scroll,使用示例如下: <ion-infinite-scroll (ionInfinite)="doInfinite($ev ...
- 5 TensorFlow入门笔记之RNN实现手写数字识别
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- redmine集成git
步骤: redmine服务器 1. 在下载安装GIT客户端 下载地址: https://git-scm.com/ 2. 在redmine服务器上将对应项目的git镜像到本地(不是源码下载到本地 ...