我正在创建在我的底座上绘制的 png 图像,我可以从底座保存一个 png 图像,供您引用
Graphics g = e.Graphics;
....
g.DrawLine(pen, new Point(x, y), new Point(x1, y1));
.....
base.OnPaint(e);
using (var bmp = new Bitmap(500, 50))
{
base.DrawToBitmap(bmp, new Rectangle(0, 0, 500, 50));
bmp.Save(outPath);
}
这是单色透明图像,现在我如何将这个图像反转为 png 填充任何颜色并且真实图像部分应该是透明的,有没有可能?
细节:所以透明会变成不透明,有填充的地方会变成透明
最佳答案
如果您愿意使用 unsafe
,还有一种更快的方法代码:
private unsafe void Invert(Bitmap bmp)
{
int w = bmp.Width, h = bmp.Height;
BitmapData data = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
int* bytes = (int*)data.Scan0;
for ( int i = w*h-1; i >= 0; i-- )
bytes[i] = ~bytes[i];
bmp.UnlockBits(data);
}
请注意,这并不关心颜色,也会反转这些颜色。如果您希望使用特定颜色,则必须稍微修改代码。
关于c# - 如何创建反向png图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11428724/