获取位图,并将其绘制成图像(Get bitmap and draw it into image)

2019-09-29 16:34发布

我想从我的图片框图纸保存到的位图,并绘制成位图图像。 到目前为止,一切都没有出现在最终图像中,但在调试时我只能说,原来的位图不是无效和/身高是正确的。 但是没有经过我画成的形象出现。

我救我的画成这样的位图:

GraphicsPath path = RoundedRectangle.Create(x, y, width, height, corners, RoundedRectangle.RectangleCorners.All);
        g.FillPath(Brushes.LightGray, path);


        g.SetClip(path);

        using (Font f = new Font("Tahoma", 9, FontStyle.Bold))
            g.DrawString(mtb_hotspotData.Text, f, Brushes.Black, textX, textY);
        g.ResetClip();

        bitmap = new Bitmap(width, height, g);

然后将其保存:

hs.bitmap = new Bitmap(bitmap);

最后使用它:

for (int i = 0; i < imageSequence.Count; i++) {
            Graphics g = Graphics.FromImage(imageSequence[i]);
            //g.CompositingMode = CompositingMode.SourceOver;
            //hotspot.bitmap.MakeTransparent();
            int x = hotspot.coordinates[i].X;
            int y = hotspot.coordinates[i].Y;
            g.DrawImage(hotspot.bitmap, new Point(x, y));
        }


        return imageSequence;

到目前为止,我无法找到任何问题,这个解决方案,所以我不知道,当故障是。

Answer 1:

你似乎误解一的关系, Bitmap和一个Graphics对象。

  • 一个Graphics对象不包含任何图形; 它是用于绘制某种形式的位图的工具。

  • 该位图构造函数使用的是( public Bitmap(int width, int height, Graphics g)没有真正连接 BitmapGraphics对象。 它不仅采用了dpi的分辨率Graphics

你不显示怎么您的Graphics创建。 如果你想画成Bitmap (而不是一个控件的面)最直接的方法是这样的:

Bitmap bitmap = new Bitmap(width, height);
bitmap.SetResolution(dpiX, dpiY);  // optional

using (Graphics G = Graphics.FromImage(bitmap ))
{

   // do the drawing..
   // insert all your drawing code here!

}

// now the Bitmap can be saved or cloned..
bitmap.Save(..);
hs.bitmap = new Bitmap(bitmap);  // one way..
hs.bitmap = bitmap.Clone();      // ..or the other

// and finally disposed of (!!)
bitmap.Dispose();


文章来源: Get bitmap and draw it into image