[英]How i can use FontLoader qml object in canvas qml element?
您好,我想在Canvas元素中使用設置為Fontloader qml對象的字體,其中我有一個彎曲的文本。 有可能嗎? 在一般情況下更改畫布文本的字體家族是可能的嗎? 這是我的代碼:
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
FontLoader { id: webFont;name: "OpenSans"; source: "qrc:/OpenSans-Bold.ttf" }
Canvas{
property string nameFont: webFont.name
function drawTextAlongArc(context, str, centerX, centerY, radius, angle)
{
context.save();
context.translate(centerX, centerY);
context.rotate(-1 * angle / 2);
context.rotate(-1 * (angle / str.length) / 2);
for (var n = 0; n < str.length; n++) {
context.rotate(angle / str.length);
context.save();
context.translate(0, -1 * radius);
var char1 = str[n];
context.fillText(char1, 0, 0);
context.restore();
}
context.restore();
}
anchors.fill: parent
onPaint: {
var ctx = getContext("2d");
ctx.fillStyle = Qt.rgba(1, 1, 1, 1);
ctx.fillRect(0, 0, width, height);
ctx.font='50px OpenSans'
ctx.textAlign = "center";
var centerX = width / 2;
var centerY = height/2; //height - 30;
var angle = Math.PI * 0.8; // radians
var radius = 180;
ctx.fillStyle="#000000"
drawTextAlongArc(ctx, "Hello World", centerX, centerY, radius, angle);
}
}
}
我想使用我用指令設置的Verdana字體代替:
ctx.font ='50px Verdana'
設置為FontLoader的字體{id:webFont; 來源:“ qrc:/OpenSans-Bold.ttf”}
我該怎么辦?
正如您在評論中所說,問題確實是字體名稱中的空格。
如文檔中所述 :
注意:font-size和font-family屬性是必需的,並且必須按照上面顯示的順序排列。 另外,必須引用名稱中帶有空格的字體系列。
因此,應該通過加載字體來解決問題
FontLoader { id: webFont; source: "qrc:/OpenSans-Bold.ttf" }
和使用
ctx.font='50px "Open Sans"'
甚至更好:
ctx.font='50px "%1"'.arg(webFont.name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.