Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net GDI+;从图元文件到JPEG/GIF的图像转换结果为黑色背景_.net_Vb.net_Gdi+_Metafile_Image Conversion - Fatal编程技术网

.net GDI+;从图元文件到JPEG/GIF的图像转换结果为黑色背景

.net GDI+;从图元文件到JPEG/GIF的图像转换结果为黑色背景,.net,vb.net,gdi+,metafile,image-conversion,.net,Vb.net,Gdi+,Metafile,Image Conversion,因此,我将一个图元文件(确切地说是EMF)转换为jpeg或gif(只要它与浏览器兼容就无所谓),当我进行转换时,所有透明像素都变为黑色。我不知道如何在GDI+中执行此操作,但以下是我用于保存文件的方法: Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream) Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Im

因此,我将一个图元文件(确切地说是EMF)转换为jpeg或gif(只要它与浏览器兼容就无所谓),当我进行转换时,所有透明像素都变为黑色。我不知道如何在GDI+中执行此操作,但以下是我用于保存文件的方法:

Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream)
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif)

我的理解是,您需要向框架提供有关目标和源图像的图像格式的信息,以便正确翻译alpha通道

特别是颜色信息:每像素位数,以及整个图像是否有每像素alpha或透明颜色或单个alpha值,诸如此类


<>但是,我不确定这是如何在VB中完成的(或者在.NET中,对于这一点)——我使用本机C++来进行这些类型的操作…

< p>查看Bob Powell的网站。他有一公吨的GDI+东西。

据我所知,图元文件不包含背景信息-它只是透明的

一个简单的解决办法是简单地给背景涂上你想要的颜色

例如,下面的代码创建一个与原始图像大小相同的位图,绘制白色背景,然后在背景上绘制图元文件图像

        Rectangle imageRect = new Rectangle(0, 0, originalImage.Width, originalImage.Height);
        Bitmap newImage = new Bitmap(originalImage.Width, originalImage.Height);
        Graphics g = Graphics.FromImage(newImage );
        g.FillRectangle(new SolidBrush(Color.White), imageRect);
        g.DrawImage(originalImage, new Point(0, 0));