标签:

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();

}

}

}

标签:

来源: https://www.cnblogs.com/panchanggui/p/9802430.html

java 消除png 锯齿_java Graphics2d消除锯齿,使字体平滑显示相关推荐

  1. java 画图板 锯齿_java绘画中的锯齿问题

    java给图中的锯齿问题也称作呈现兼容性问题 JDK(tm)1.1呈现模型是基于像素给的模型,该模型的坐标无限细分,且位于像素之间.使用一个一像素宽的画笔执行绘制操作,填充路径锚点向下和向右的像素.J ...

  2. java 消除png 锯齿_反转(移除)抗锯齿滤波器

    我有一组消除锯齿的灰度PNG图像 . 我需要知道如何以编程方式恢复抗锯齿效果并再次获得锐利边缘 . 我正在使用GDI,但我对代码不太感兴趣 . 如果可以构建这样的矩阵,我需要一个算法,可能是卷积滤波器 ...

  3. java 缩放图片 锯齿_Java Image Filters 图像缩放质量差的问题解决

    Java Image Filters 提供一个用来处理图像缩放的 Filter 类:ScaleFilter,用法如下: BufferedImage bi_src = ...; ImageIO.writ ...

  4. java session 永不过期_Java Web Application使Session永不失效(利用cookie隐藏登录)

    在做 Web Application 时,因为 Web Project 有 session 自动失效的问题,所以如何让用户登录一次系统就能长时间运行三个月,就是个问题. 后来,看到 session 失 ...

  5. java list 不重复_java中如何使list集合中元素不重复

    对list集合中的重复值进行处理,大部分是采用两种方法,一种是用遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合.不同方法在不同情况下有各自的优势. 相关免费视 ...

  6. java中怎么让字体可以显示下划线呢_java中怎么让字体可以显示下划线呢

    在.net中,对于Font类来说,可以直接使用常量来生成带有下划线的字体. 但是,到了Java中,想生成带有下划线的字体,就稍微复杂了一点,需要借助于TextAttribute类来生成.(推荐:jav ...

  7. java html pdf 中文_java html 转pdf 中文可显示

    摘要: 最近正好项目有用到 ITEXT ,在网络上搜索了一番,发现了很多方案,但是都是显示中文有问题,本文提供一种最便捷的方式来实现,不需要任何额外 JAR 包. 引用一句另外一个人提出解决方式的一句 ...

  8. java 液晶屏数字_java实现液晶数字字体显示当前时间

    本文实例为大家分享了java实现液晶数字字体显示当前时间的具体代码,供大家参考,具体内容如下 import java.text.SimpleDateFormat; import java.util.D ...

  9. java 数字千分位_java实现数字千分位的显示

    由于项目中要求输入的数字用千分位显示,数字保留两位小数,而且要求再删除数字的时候也要求删除后的数字也要是千分位显示,好像表达的有点不清楚,贴代码吧,作为一个小工具吧. /** * 格式化数字为千分位显 ...

最新文章

  1. java 快速入门_Java快速入门
  2. 【转】OGRE资源相关分析
  3. 双向循环神经网络_情感分析:基于循环神经网络
  4. java websocket 上传大文件,使用java websocket API和Javascript上传文件
  5. 高斯-赛得尔迭代式 c++_高斯混合模型(Gaussian Mixture Model)与EM算法原理(一)
  6. HTML5 基础知识(三)
  7. 如何使用OSQP-Eigen
  8. 关于今日头条小程序(字节跳动小程序)相关问题
  9. 调整Virtual Box硬盘大小
  10. 软件测试实训平台 文档,软件测试实训-20210322233101.docx-原创力文档
  11. red-hat Linux6-5的安装
  12. springMVC实现的crud操作
  13. 裘慧明:跟世界上最聪明的人博弈
  14. QT递归获取指定目录下的所有文件
  15. IBM SPSS Amos下载与安装
  16. C. Balanced Stone Heaps
  17. 双稳态一键开关机电路
  18. FTP软件的安装及上传/下载方法
  19. 原生Js放大镜实例(附图附讲解可直接复制研究使用,小白福利)
  20. python 中文排序(按拼音首字母)

热门文章

  1. 四大CPU架构的区别
  2. 怎么用java做日历_怎么用java做日历?实例讲解
  3. linux_ohs安装_weblogic进行管理
  4. javascript技巧搜集。
  5. lol手游账号服务器,英雄联盟手游
  6. 微信小程序绘制自定义海报,可带二维码,头像,文字等
  7. VirtualBox虚拟机下载
  8. ssh协议(git和github gitee 之间的传输协议)
  9. DataTables warning:table id = TableDate: Cannot reinitialise DataTable的解决办法
  10. 三维坐标要建一个4*4的矩阵?平移 旋转 缩放