2016-07-06 6 views
2

私は、その背後にドロップシャドウとその中のテキストを持つ中央矩形を持っています。ウィンドウのサイズを変更すると、テキストがぼやけて表示される

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を使用しています。

+0

それは、ウィンドウのサイズ変更を行い、あなたのウィンドウマネージャの問題である可能性があります。あなたはKWinにどのような影響を与えましたか?影響を変えることもあなたの問題に影響しますか? – user23573

+0

@ BogdanWilliレンダリングバックエンドを変更し、プラズマ上でコンポジタントを無効にする組み合わせを行いましたが、結果は同じです。 – DanielJG

答えて

1

解決策1:背景矩形にのみDropShadowを使用し、その上にテキストを描画します。

解決策2:centerRectの整数幅と高さを使用します。グラフィカルなエフェクトは、最初にcenterRectをテクスチャにレンダリングします。ソースの幅または高さが整数でない場合、テクスチャサイズは元のアイテムサイズに対応しません。テクスチャをペイントするとき、テクスチャ座標はピクセル位置に正確に当たらず、いくつかの補間が必要です。

+0

ソリューション1を使用して終了しました。 – DanielJG

1

私にとって、最も簡単なのは、TextをcenterRectから移動することです。そのため、DropShadowの副作用の影響を受けずに子objになることはありません。 例:

移動外のテキストと以下のようにそのコンディショニングを変更:

Text{ 

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

} 
関連する問題