gpt4 book ai didi

image-processing - JavaFX:禁用 Canvas 对象上的图像平滑

转载 作者:行者123 更新时间:2023-12-04 07:25:04 32 4
gpt4 key购买 nike

我正在使用 JavaFX 制作一个用于桌面的 Sprite 编辑器。

我正在尝试实现缩放功能,但遇到了一个问题:我不知道如何 Canvas 上禁用图像平滑对象 .

我调用 Canvas.setScaleX()Canvas.setScaleY()根据每个教程实现 Canvas缩放。但是我的放大时图像模糊 .

我有一些测试代码here展示。

What I get What I want

由于这是一个 Sprite 编辑器,因此拥有清晰的边缘对我来说很重要。在 Canvas 上修复图像平滑的替代方法是有一个non-smoothing ImageView ,并有一个隐藏的 Canvas借鉴,我宁愿避免。

帮助表示赞赏。

(here's a link to a related question, but doesn't address my particular problem)

最佳答案

我对模糊有同样的问题。

就我而言,我的电脑有 Retina Display。 Retina Display 使像素以子像素呈现。将图像绘制到 Canvas 上时,将使用子像素的抗锯齿绘制图像。我还没有找到防止这种抗锯齿发生的方法(尽管可以使用其他 Canvas 技术,例如 HTML5's Canvas )

与此同时,我有一个解决方法(尽管我担心性能):

public class ImageRenderer {
public void render(GraphicsContext context, Image image, int sx, int sy, int sw, int sh, int tx, int ty) {
PixelReader reader = image.getPixelReader();
PixelWriter writer = context.getPixelWriter();
for (int x = 0; x < sw; x++) {
for (int y = 0; y < sh; y++) {
Color color = reader.getColor(sx + x, sy + y);
if (color.isOpaque()) {
writer.setColor(tx + x, ty + y, color);
}
}
}
}
}

PixelWriter 绕过了绘制图像时发生的抗锯齿。

关于image-processing - JavaFX:禁用 Canvas 对象上的图像平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725813/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com