gpt4 book ai didi

C# 紧凑型框架 : load a png alpha blending file

转载 作者:行者123 更新时间:2023-11-30 22:48:09 24 4
gpt4 key购买 nike

我有一个带有自己的 alpha 混合的 png 图像文件。现在我想将它加载到手机中的表单上。我尝试了很多方法但没有用。有什么解决办法吗?提前致谢。这是我用来从资源加载图像的方法:

Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("drawObj.Graph.png");
Bitmap myPNGImg = new Bitmap(stream);

然后创建与图像 Graph.png 大小相同的新位图:

Bitmap myBlankImg = new Bitmap(48,48);

Graphics mynewGraph = Graphics.FromImage(myNew);

mynewGraph.Clear(Color.Transparent);

绘制 PNG 位图:mynewGraph.DrawImage(myPNGImg, 0, 0);然后是我从网上读到的一些东西:(

Rectangle rectDest = new Rectangle(50,50, 100, 100);

ImageAttributes imgatt = new ImageAttributes();

imgatt.SetColorKey(Color.Transparent, Color.Transparent);

myGraph.DrawImage(myNew, rectDest, 0, 0, 99, 99,GraphicsUnit.Pixel, imgatt);

有效,但只清除图像的四个角(某种圆角矩形)。剩下的图像周围仍然有一些白色边框。

最佳答案

在 Compact Framework 上使用位图加载图像会丢失 alpha 信息。设置颜色键是实现透明度的另一种方式,您可以牺牲一种完全相同的颜色作为透明色。

要在 Compact Framework 上使用 alpha 混合,您可以使用 OpenNETCF 的辅助类加载 PNG 文件,保留 alpha 信息(参见 Transparency and alpha blending ),然后 P/Invoke AlphaBlend .它不漂亮,但这就是它所需要的。另请注意,使用 alpha 混合会严重影响性能。要动态烘焙一些图像,这很好,但对于通用的屏幕绘图操作,您可能需要使用另一种方法。

关于C# 紧凑型框架 : load a png alpha blending file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1865101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com