绘制前的Skiasharp比例位图

问题描述 投票:0回答:1

我有问题。我正在使用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'

我在做什么错?

c# xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
1
投票

使用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))
© www.soinside.com 2019 - 2024. All rights reserved.