我有问题。我正在使用TextToBitmap函数,因此可以修改位图。但是,当我将其缩放到更大的位图时,文本的分辨率会变差。为了解决这个问题,我将TextSize设置为400,因此以高分辨率将文本绘制得非常大,这给了我高分辨率的位图。问题是当绘制位图时,它仍然很大,因此我想将位图缩放到特定的高度。
现在我知道如何做到这一点,我需要这样做:
bitmapCollection.Add(bitmapCollection.Count, new TouchManipulationBitmap(TextBitmap)
{
Matrix = SKMatrix.MakeTranslation(position.X, position.Y),
Matrix = SKMatrix.MakeScale((float)0.3, (float)0.3),
});
但是我不能使用Matrix 2次。翻译和小数位是必要的,那么如何同时修改两者?
编辑:
我尝试使用此:
SKMatrix matrix;
bitmapCollection.Add(bitmapCollection.Count, new TouchManipulationBitmap(TextBitmap)
{
Matrix = SKMatrix.Concat(matrix, SKMatrix.MakeTranslation(position.X, position.Y),
SKMatrix.MakeScale((float)0.3, (float)0.3))
});
但是这给了我以下错误:
参数1必须与'ref'关键字一起传递使用未分配的局部变量'matrix'
我在做什么错?
使用Concat合并两个矩阵
public static void Concat (ref SkiaSharp.SKMatrix target, ref SkiaSharp.SKMatrix first, ref SkiaSharp.SKMatrix second);
docs中对此主题进行了冗长的讨论。
根据您的具体情况
SKMatrix matrix = new SKMatrix();
// matrix will contain the combined value
SKMatrix.Concat(ref matrix,
SKMatrix.MakeTranslation(position.X, position.Y),
SKMatrix.MakeScale((float)0.3, (float)0.3))