c# - 图形对象制作空白图像

标签 c# asp.net web-services image-processing gdi+

我正在尝试绘制图像以通过 .net 4.5 中的 Web 服务作为 Base 64 字符串返回。我可以加载自定义背景,但随后我需要在该背景上绘制文本。问题是,一旦我从图像->图形对象->图像,我最终会得到一个空白的 png。如果我通过服务返回原始 srcImage(空白模板),一切正常,但我的标签是空白的,所以我知道这一定是我的图形对象在某个地方出现问题。

我的代码是:

    var labelSize = new Size(400, 459);
    using (var srcImage = Image.FromFile(HostingEnvironment.MapPath("~/images/labels/" + labelImageFilename))) {
        PixelFormat format = srcImage.PixelFormat;
        using (Bitmap newImage = new Bitmap(labelSize.Width, labelSize.Height, format))
        using (Graphics g = Graphics.FromImage(newImage)) {
            g.SmoothingMode = SmoothingMode.AntiAlias;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;
            Rectangle srcRect = new Rectangle(0, 0, srcImage.Width, srcImage.Height);
            Rectangle destRect = new Rectangle(0,0, labelSize.Width, labelSize.Height);
            g.DrawImage(srcImage, destRect, srcRect, GraphicsUnit.Pixel);
            // draw other shapes etc

            g.FillRegion(Brushes.Blue,new Region(new Rectangle(0,0,200,200)));
            g.Clear(Color.Red);
            g.Flush();
            return new Bitmap(srcImage, labelSize.Width, labelSize.Height); // this works fine, but my image is just the standard background I'm using
            return new Bitmap(labelSize.Width, labelSize.Height, g); //  returns a blank image
        }
    }

没有绘制任何内容,无论是模板背景(srcImage),还是红色或蓝色矩形。

最佳答案

我认为您的图形对象似乎正在 newImage 上绘制,但您正在返回 srcImage。如果你想返回你的绘图结果,我认为你需要返回newImage。

尝试这样的事情:

return new Bitmap(newImage, labelSize.Width, labelSize.Height);

关于c# - 图形对象制作空白图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18681150/

相关文章:

html - contert_placeholder 上的内容与页脚重叠

c# - 从 javascript 调用成员背后的代码

c# - 在 Silverlight (C#) 中访问 MySQL 数据库

java - Rally REST WS 查询 : Getting ObjectIDs of One-To-Many children using API v2. 0

c# - 模板中的服务器控件如何对数据上下文敏感?

c# - 使用 "for"属性打开文件对话框

c# - log4net 每分钟创建一个新日志

c# - 如何在 C# 中正确实现可取消、长时间运行的线程?

c# - 构建不含 '=' 字符的加密 key

java - OpenShift 状态 404 - Tomcat 本地工作正常