当前位置: 首页 > 编程语言 > C#

如何创建一个反转的png图像?Share

时间:2023-04-11 02:51:51 C#

如何创建反向png图像?我正在创建在我的基础上绘制的png图像,从基础我可以保存一个png图像供您参考Graphicsg=e.Graphics;....g.DrawLine(pen,newPoint(x,y),newPoint(x1,y1));.....base.OnPaint(e);使用(varbmp=newBitmap(500,50)){base.DrawToBitmap(bmp,newRectangle(0,0,500,50));bmp.保存(输出路径);这是单色透明图像,现在我怎样才能反转这个图像像png填充任何颜色和真实图像部分应该是透明的,这可能吗?位细节:透明变不透明,填充的地方变透明颜色像素颜色;for(inty=0;y来自此处:C#中的图像处理:反转图像h=bmp.Height;BitmapData数据=bmp.LockBits(newRectangle(0,0,w,h),ImageLockMode.ReadWrite,PixelFormat.Format32bppArgb);int*bytes=(int*)data.Scan0;for(inti=w*h-1;i>=0;i--)bytes[i]=~bytes[i];bmp.UnlockBits(data);}请注意,这不关心颜色,它也会反转那些.如果你想要特定的颜色那么代码必须稍微修改一下。对于任何想要在不使用不安全的情况下快速反转位图颜色的人:publicstaticvoidBitmapInvertColors(BitmapbitmapImage){varbitmapRead=bitmapImage.LockBits(newRectangle(0,0,bitmapImage.Width,bitmapImage.Height),ImageLockMode.ReadOnly,PixelFormat.Format32bppPArgb);varbitmapLength=bitmapRead.Stride*bitmapRead.Height;varbitmapBGRA=newbyte[bitmapLength];Marshal.Copy(bitmapRead.Scan0,??bitmapBGRA,0,bitmapLength);bitmapImage.UnlockBits(bitmapRead);for(inti=0;iBitmapGetPixelandSetPixelareveryslow,thismethodworksbycopyingtheBitmappixelsintoabytearraywhichthencanbeloopedoverandchangedbeforethepixelsarefinallycopyed.当你说反转透明时parttocolor,你是把实际的颜色存储在你刚做的完全透明的PNG图像中吗?很多程序会通过从透明度中删除颜色数据来优化png,所以你不能反转它。颜色可以转换为透明但是透明度(没有底层颜色)无法转换为颜色。如果你幸运的话,你的PNG将不会被优化并且仍然保持原始颜色数据不变,但是如果你从用户输入中执行此操作那么它将不适用于大多数情况。以上就是C#学习教程:如何创建反png图片?全部内容分享,如果对大家有用,还需要详细了解C#学习教程,希望大家多多关注---本文来自来自网络合集,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: