栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaFX图形“模糊”或抗锯齿?(未使用效果)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaFX图形“模糊”或抗锯齿?(未使用效果)

请参阅形状文档:

大多数节点倾向于仅对它们应用整数转换,并且通常还使用整数坐标定义它们。对于这种常见情况,具有直线边缘的形状的填充趋向于变脆,因为它们与落在整数设备坐标上的像素之间的裂缝对齐,因此倾向于自然地覆盖整个像素。

另一方面,抚摸那些相同的形状通常会导致轮廓模糊,因为默认的抚摸属性既指定默认笔划宽度为1.0坐标(通常恰好映射到1个设备像素),又笔划应跨越形状的边界,跌至边界的一半。由于许多常见形状的边界倾向于直接落在整数坐标上,并且那些整数坐标通常精确地映射到整数设备位置,因此边界倾向于导致形状边界两侧的像素行和像素列覆盖50%而不是一个或另一个的100%覆盖率。因此,填充通常可以是脆的,但是笔划通常是模糊的。

避免这些模糊轮廓的两种常见解决方案是使用更宽的笔划,以完全覆盖更多像素-通常,如果没有有效的比例转换,则笔划宽度为2.0即可实现此目的-
或指定StrokeType.INSIDE或StrokeType.OUTSIDE笔划样式-会将默认的单个单位笔触偏向形状边框内外的全像素行或列之一。

并参阅Node的文档:

在设备像素级别,整数坐标映射到像素的角和裂缝,并且像素的中心出现在整数像素位置之间的中点。因为所有坐标值都是用浮点数指定的,所以坐标可以精确地指向这些角(当浮点值具有精确的整数值时)或像素上的任何位置。例如,坐标(0.5,0.5)将指向舞台上左上像素的中心。同样,尺寸为10
x
10的(0,0)处的矩形将从舞台上左上像素的左上角跨到第10条扫描线上第10个像素的右下角。该矩形内最后一个像素的像素中心将位于坐标(9.5,9.5)。

因此,当笔划宽度为奇数时,可以选择干净的线条:

  1. 使用StrokeType.INSIDE或StrokeType.OUTSIDE笔触样式。
  2. 将形状的坐标偏移0.5个像素,以使笔划排列在直线上,而不是直线之间的裂缝。
  3. 只需使用下一个偶数作为笔划宽度,例如1 => 2,3 => 4,依此类推。

至于为什么

setSmooth(false)
不起作用,我不确定,我猜是它指的抗锯齿与笔划集中在像素之间的裂缝中心时执行的抗锯齿样式无关,但是我不知道为什么会这样。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号