3

多くの「グリフ」が次々に描画されたpngビットマップと、ASCII番号をこのビットマップ内の位置とサイズに関連付けるテキストファイルがあります。グリフは、さまざまな色と透明度レベルを使用して手描きされています。

どういうわけか、QML でこのフォントを開いて使用する必要があります。残念ながら、QML はビットマップ フォントを「そのまま」サポートしていないようです。

解決策はありますか?

4

2 に答える 2

2

この質問を投稿してから数日後、解決策に取り組みました。それ以来、多くの人がまだ Qt Quick で「昔ながらの」ビットマップ フォントを使用しようとしているようです。私が見つけたソリューションは本当にエレガントで、非常に優れたパフォーマンスを発揮します。

import QtQuick 1.1

Row {
    property string text: ""
    Repeater {
        model: text.length
        Image {
            source: "bitmapfont/" + text.charCodeAt(index) + ".png"
        }
    }
}

他の qml コードと同じディレクトリに「TextBitmap.qml」として保存し、フォント名 (この例では「bitmapfont」) と呼ばれるサブディレクトリを作成します。各ビットマップ フォント グリフを個別に描画またはカットし、そのグリフの Unicode を名前とする別の .png としてそのサブフォルダーに保存する必要があります。たとえば、文字「A」の場合は bitmapfont/65.png、文字「B」の場合は bitmapfont/66.png などです。

このカスタム TextBitmap 要素が初めてレンダリングされるとき、またはテキスト プロパティが変更されるたびに、Repeater はテキスト内の各文字の画像要素を自動的に作成し、それぞれが「bitmapfont」から対応する .png を表示します。

次のように使用します。

import QtQuick 1.1

Rectangle {
    width: 800
    height: 500

    TextBitmap {
        text: "Hello Bitmap Fonts!"
    }
}

http://www.royconejo.com/bitmap-fonts-in-qt-quick-qml/では、より精巧な TextBitmap 要素、その外観のビデオ、さらにはサンプル プロジェクトを見つけることができます。

誰かの役に立てば幸いです!

于 2013-12-31T21:28:26.637 に答える
0

これは、Qt のフォント インフラストラクチャを使用して直接行うことはできません。ビットマップ フォントはサポートされていません。を使用できますQFontDatabase::addApplicationFronFromDataが、フォントは TrueType フォントまたは TrueType フォント コレクションとして使用できる必要があります。

回避策は次のとおりです。

  1. そのようなフォントを使用して「テキスト」を QImage にレンダリングし、QML を使用して表示します。テキストが静的で頻繁に変更されない場合は、これで問題ありません。

  2. を使用して「テキスト」をレンダリングしますQQuickPaintedItem

于 2013-08-26T19:04:02.197 に答える