美文网首页
java 进行自定义的「双缓冲」绘图出现模糊或锯齿 - JJpl

java 进行自定义的「双缓冲」绘图出现模糊或锯齿 - JJpl

作者: 生信石头 | 来源:发表于2023-12-03 09:25 被阅读0次

根本原因:高清屏幕的普及。
目前绝大多数人已经使用3K,4K屏幕。由于分辨率较高,许多程序按原有比例显示时会显得比较小。于是windows从系统层级提供了调整方法。


这会带来好处,许多应用支持自动scale up,于是显示的又清晰有好看,但也有一些并没有跟得上。简单来说,Java 8 或者之前的 Java 版本是不支持高清屏的,所以无法scale。Java 9或者以上是支持的,所以可以。
但事实上,对于Java来说,swing 中进行 BufferedImage 绘制,然后再 drawImage 到 JPanel 上,就会发现,尽管程序整体界面已经scale up得很好了。drawImage 出来的 BufferedImage 就会模糊。取消掉Window全局的 scale up,图像会显示得比较小,当然这是支持放大的,同时也解决了问题,图片不会再模糊。
总而言之,目前没找到非常合适的方法,可以做好自定义的双缓冲,同时不影响drawImage 出来的 BufferedImage画质(在系统层级scale up的情况下)。
如果是良好显示:

如果是非正常显示:

尝试放大再缩小,似乎也没什么用处....不过也可能是还是不够理解 Java Graphics2D 和 Image 的操作吧。
以后再说,2023年12月04日。
====
2023年12月04日,经过测试,还是找到大体方法:
  1. 首先是获取操作系统scale up得比如,如 200%;
  2. 绘图前进行画布放大,随后 graphics scale up,直接绘制
  3. 随后 drawImage 的时候,让按照原图尺寸绘制,如此就会 scale down,清晰度就一切OK。

相关文章

  • 移动端Canvas出现锯齿和模糊

    在使用canvas绘图时,发现在移动端、ipad出现锯齿或模糊的情况,这是因为设备像素比(Device pixel...

  • 优化 - 暂时

    自定义 view 的双缓存技术: android双缓冲绘图技术分析 分析工具: 知识体系引导 Android系统对...

  • iOS CALayer 绘图模糊有锯齿的解决方案

    在CALayer中绘制图形会出现锯齿和模糊,同样绘图在UIView中就没有问题。经查资料发现不自动处理两倍像素的情...

  • 二十八、使用SurfaceView实现动画

    虽然前面介绍了使用自定义View来进行绘图,但View的绘图机制存在如下两个缺陷: View缺乏双缓存机制当程序需...

  • android双缓冲绘图技术分析

    双缓冲、多缓冲技术在计算机科学中其实是一个广义的概念,不过其本质上的意思都是差不多的。今天我们就来讲一讲双缓冲技术...

  • SurfaceView基础

    为什么要使用SurfaceView来实现动画? 因为View的绘图存在以下缺陷: View缺乏双缓冲机制当程序需要...

  • 使用SurfaceView来实现动画

    为什么使用SurfaceView来实现动画? 因为view的绘图存在以下缺陷 View缺乏双缓冲机制 当程序需要更...

  • Android View双缓冲机制

    java的绘图时,都接触过图像的双缓存技术,解决绘制频繁导致闪屏的问题。今天,记录一下安卓客户端自定义View的缓...

  • java使用Graphics2D绘制文字解决模糊的问题

    Graphics2D绘制文字默认情况下会有锯齿,设置抗锯齿后出现模糊,经过多次尝试得出非技术性的解决方案,但是确实...

  • Netty ByteBuf原理及其源码分析

    类图 缓冲区介绍 当我们进行数据传输的时候,往往需要缓冲区。java NIO 中自带的提供的就是java.nio....

网友评论

      本文标题:java 进行自定义的「双缓冲」绘图出现模糊或锯齿 - JJpl

      本文链接:https://www.haomeiwen.com/subject/bcoqgdtx.html