调整窗口大小时,文本会变得模糊

时间:2016-07-06 05:57:20

标签: qt qml qtquick2

我有一个居中的矩形,后面有一个投影,里面有一些文字。

import QtQuick 2.5
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0

Window {

    visible: true
    width: 800; height: 640

    Rectangle{

        id: centerRect
        width: parent.width * 0.7; height: parent.height * 0.7

        anchors{
            horizontalCenter: parent.horizontalCenter
            verticalCenter: parent.verticalCenter
        }

        radius: 7
        border.color: "#C0C0C0"

        Text{

            text: "Hello World!"
            font.pixelSize: 0.07 * parent.height

            anchors{

                horizontalCenter: parent.horizontalCenter
                verticalCenter: parent.verticalCenter
            }
        }
    }

    DropShadow
    {
        anchors.fill: centerRect
        horizontalOffset: 1; verticalOffset: 1
        radius: 5
        samples: 11
        color: "#CDCDCD"
        source: centerRect
    }
}

当我调整窗口大小时,文本会变得稍微模糊或失焦。我认为这可能是我如何将字体像素大小缩放到矩形高度的问题,但问题与静态值相同。如果我删除阴影效果,当我调整窗口大小时,文本的可见性就可以了。

使用投影和调整窗口大小时,如何保持良好的文本可见性?我在OpenSUSE Leap 42.1(Plasma 5.5.5)上使用Qt 5.5.1。

2 个答案:

答案 0 :(得分:1)

解决方案1:仅将DropShadow用于背景矩形,并在其上方绘制文本。

解决方案2:使用centerRect的整数宽度和高度。图形效果首先将centerRect渲染到纹理中。如果源宽度或高度不是整数,则纹理大小将与原始项目大小不对应。在绘制纹理时,纹理坐标不会准确地到达像素位置,需要进行一些插值。

答案 1 :(得分:1)

对我来说,最简单的是将Text移出centerRect,因此它不会是它的子obj,所以不会受到DropShadow副作用的影响。 例如:

将文字移到外面并修改其条件如下:

Text{

    text: "Hello World!"
    font.pixelSize: 0.07 * centerRect.height
    anchors.centerIn: centerRect

}