获取位图并将其绘制到图像中



我正在尝试将我的绘图从图片框保存到位图中,然后将该位图绘制到图像中。到目前为止,最终图像中没有出现任何内容,但在调试时,我只能说,原始位图不为空,with/height 是正确的。但是,在我将其绘制到图像中后,没有任何内容出现。

我将绘图保存为位图,如下所示:

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;

到目前为止,我无法在此解决方案中找到任何问题,因此我不知道故障在哪里。

你似乎误解了BitmapGraphics对象之间的关系。

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

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

您不会显示如何创建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();

相关内容

  • 没有找到相关文章

最新更新