在canvas.drawText上旋转表情符号

时间:2017-05-14 16:16:57

标签: java android canvas

我使用canvas.setMatrix()旋转和缩放画布,然后使用canvas.drawText();在画布上绘制文本。这是按预期工作但当我尝试绘制包含表情符号(Android设备的默认表情符号)的文本时,它们不会被旋转。文本中的其他所有内容都按预期旋转。此外,绘图+缩放与emojis的预期工作一样,它只是旋转不起作用。

我真的想避免使用另一个位图绘制表情符号的解决方案,然后应用旋转在画布上绘制该位图。

0转的文字:https://i.gyazo.com/68ca0a13a1178e1614c976d4f041c8ee.png 已应用轮播的文字:https://i.gyazo.com/3f9f9150b89e387e64cb9fc79737ca7d.png

为清楚起见,表情符号是String元素的一部分。

if(text != null && text.length > 0){
    canvas.save();
    canvas.setMatrix(getDrawingMatrix(rect)); //Get a matrix with scaling, rotation & transformation applied.
    for(int i = 0; i < text.length; i++){ //text is a string array containing multiple lines of text.
        String string = text[i];
        if(string.length() > 0){
            canvas.drawText(string, 0, (i)*paint.descent() - (i+1)*paint.ascent(), paint); //each line has different y-value.
        }
    }
    canvas.restore(); //after drawing the matrix is restored to default.
}

哦,刚刚发现这实际上是重复的:emojis not rotating with canvas

0 个答案:

没有答案