我正在使用C#开发一个图像编辑器的应用程序,借助于
System.Drawing.Graphics
类。该应用程序必须能够在Windows和Linux上运行。
情况很简单,我有一个背景图片(jpeg,24bpp。 not progressive),我必须在上面绘制透明的png图片。我正在使用以下模式(有其他坐标和更多的图像)。
Bitmap backgroundJpg = new Bitmap("bg.jpg");
Bitmap transparentPng = new Bitmap("transp.png");
using (var g = Graphics.FromImage(backgroundJpg))
g.DrawImage(transparentPng, new Point(0, 0));
backgroundJpg.Save("test.jpg");
On Windows, the result of this process is OK.
On Linux貌似png图片没有被正确处理,貌似它们在被Graphics
实例绘制时没有 "透明好"。(编辑:我检查过了,它们是透明的,但不是像Windows上那样。)
编辑:我对其他的解决方案也很感兴趣,如果它能在Windows和Linux上都运行的话。
Edit 2: It looks like 只有在透明图像有背景的情况下,透明度才会变差。在它后面。如果它被画在一个空白的Format32bppArgb
图像上,它是可以的。
其他信息。
也许我遗漏了一些配置选项来强制它在绘图过程中是透明的,或者在Linux本身有一些需要配置的东西。
Linux配置。 (if it helps)
一台BeagleBone Black设备带有
- 蝶变GNU/Linux 7.9 (wheezy)。
- Mono:
- JIT compiler: 4.0.5
- 建筑:Armel,VFP+hard
- GC: sgen
希望得到任何帮助,如果需要任何其他细节,请随时询问。谢谢!
注意:在下面的图片上,红色的 "X "是黑色背景的一部分,而蓝色的图片是透明的pngs。