【发布时间】:2022-08-19 05:02:28
【问题描述】:
我正在开发一个应用程序,用户可以在其中从预先确定的集合中添加一个(或多个)图像。这些“基本”图像中的每一个都使用相同的颜色来表示用户可以更改颜色的区域。
基本上 - 我的图像包含一个我希望能够更改颜色的区域 - 使用类似于“洪水填充”功能的东西。
现在我正在使用以下内容:
var targetColor = color;
var tableRed = new byte[256];
var tableGreen = new byte[256];
var tableBlue = new byte[256];
for (int i = 0; i < 256; i++)
{
tableRed[i] = targetColor.Red;
tableGreen[i] = targetColor.Green;
tableBlue[i] = targetColor.Blue;
}
paint.ColorFilter =
SKColorFilter.CreateTable(null, tableRed, tableGreen, tableBlue);
canvas.DrawBitmap(Image,new SKPoint( drawX, drawY), paint);
虽然这“有效”,但它并没有完全符合我的要求。这将重新着色整个对象,而不仅仅是我想要的像素
我将如何在 SkiaSharp 中执行此操作?
我认为一种选择是通过并获取我在原始图像中使用的特定颜色的每个像素,然后用新颜色替换它。
那种代码会是什么样子? 有没有更有效的方法?