gpt4 book ai didi

qt - QML 图像平滑属性不起作用

转载 作者:行者123 更新时间:2023-12-04 01:56:49 34 4
gpt4 key购买 nike

在 QML 中,我创建了一个 Rectangle查看与一套 Image其中的元素。我似乎无法获得 smooth属性工作,设置为 true对于 View 和图像。我试过缩放图像本身并缩放 View 。无论我做什么,我都会得到一个锯齿状的缩放图像。我错过了什么吗?

我正在使用 Qt 5.2 并且正在使用 QtQuick2ApplicationViewer ( QQuickView 的子类)作为我的主要观点。

我找到了通过替换引擎中的图像处理程序来应用平滑的解决方案,但我觉得是 smooth属性应该是开箱即用的。

代码:

Image {
source: "image_400x400.png"
width: 400
height: 400
smooth: true

transform {
Scale {xScale: 0.25; yScale: 0.25}
}
}

第二次尝试:
Image {
source: "image_400x400.png"
width: 100
height: 100
smooth: true
}

第三次尝试:
Rectangle {
width: 400
height: 400
smooth: true

Image {
source: "image_400x400.png"
width: 400
height: 400
smooth: true
}

transform {
Scale {xScale: 0.25; yScale: 0.25}
}
}

我每次都得到相同的结果。

更新:按照 Nejat 的建议,我尝试了新的 Qt 5 antialiasing属性(property)。结果确实有所改善,但当缩放到 0.5 倍以下时,边缘仍然有点参差不齐。有没有办法改变抗锯齿质量?

从左到右:
  • 预期输出(使用 Photoshop 缩放,未经编辑)
  • antialiasingsmooth启用
  • 只有smooth启用

  • Three antialiasing results with zoom

    我也想知道为什么 smooth什么都不做。

    最佳答案

    为了平滑下采样,您需要 mipmap !

    使用 Qt 5.3(即将发布),这将起作用:

    Image {
    source: "image_400x400.png"
    width: 100
    height: 100
    mipmap: true
    }

    对于 Qt 5.2,您可以尝试以下方法作为多重采样方法的更高质量替代方案:
    ShaderEffectSource {
    id: src
    sourceItem: Image { source: "image_400x400.png" }
    mipmap: true
    }

    ShaderEffect {
    width: 100
    height: 100
    property var source: src
    }

    如果您不需要动态更改图像的比例,最佳方法(对于所有相关 Qt 版本)是这样的:
    Image {
    source: "image_400x400.png"
    sourceSize.width: 100
    sourceSize.height: 100
    }

    图像将在 CPU 上进行高质量缩小,然后上传到 GPU。
    请注意,由于图像信息丢失,以原始图像的比例显示时看起来会更糟。

    关于smooth属性(property):
    smooth Image 的属性启用线性插值。它是 默认开启 这是对 nearest-neighbor interpolation 的改进, 用于 smooth = false ;但它对缩小规模没有多大帮助。

    关于antialising属性(property):

    设置 antialiasing = true 没有 完全改变图像缩放的质量。它只是平滑边缘,这在旋转图像时可能很重要。

    关于qt - QML 图像平滑属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286666/

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