c# - 绘制前 Skiasharp 比例位图
问题描述
我有个问题。我正在使用 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);
文档中有关于这个主题的冗长讨论。
在您的具体情况下
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))
推荐阅读
- linux-kernel - ACPI 定义块:系统总线的 _SB 和 _SB_ 之间的区别
- html - 转换 translateY 在 Safari 上不起作用
- c++ - 使用 cmake 静态链接到 Linux 中的 C++ AWS 开发工具包会因链接到共享对象文件而失败
- django - 在 Django 模型字段中存储层次结构/树?
- javascript - 如何在使用 JavaScript 或 jQuery 选择父选项时进行选择
- angular - Angular 6 - 使用范围外的函数和回调函数
- python - 对象没有属性 JSON
- javascript - 生成的 html 脚本中的 JS 函数不会运行内容
- c++ - 为什么 [[nodiscard]] 只鼓励编译器发出警告而不要求它?
- python - 加入和分组 Django 查询集