我看过一些文章,展示了可以将墨水与背景图像一起保存,以便将墨水叠加到图像上,然后将其保存为单个图像文件。但是,不幸的是,我看到的文章没有详细说明它是如何完成的。我可以使用以下语句轻松保存背景图像:
axInkPicture1.Picture.Save(@"\path\to\file.gif");
...但是背景图像上没有覆盖墨水
我不知道任何节省墨水的直接方法,但这就是我目前的做法:
string tempPath = Path.GetTempPath();
string tempFile = tempPath + @"\file.gif";
// save to a temp file
if (axInkPicture1.Ink.Strokes.Count > 0)
{
byte[] bytes = (byte[])axInkPicture1.Ink.Save(InkPersistenceFormat.IPF_GIF, InkPersistenceCompressionMode.IPCM_Default);
using (MemoryStream ms = new MemoryStream(bytes))
{
using (Bitmap gif = new Bitmap(ms))
{
gif.Save(tempFile);
}
}
}
这样可以节省墨水,但没有背景图像。
如何将墨水和图像保存到一个文件中?
任何帮助或方向指点表示赞赏...
### 编辑这是我到目前为止还尝试过的其他方法
InkRectangle inkBox = axInkPicture1.Ink.GetBoundingBox();
byte[] gifbits = (byte[])axInkPicture1.Ink.Save(InkPersistenceFormat.IPF_GIF, InkPersistenceCompressionMode.IPCM_Default);
using (System.IO.MemoryStream buffer = new System.IO.MemoryStream(gifbits))
using (var inkImage = new Bitmap(buffer))
using (var picture = new Bitmap(axInkPicture1.Picture))
using (var g = Graphics.FromImage(picture))
{
g.DrawImage(inkImage, new Rectangle(inkBox.Left, inkBox.Right, axInkPicture1.Picture.Width, axInkPicture1.Height));
picture.Save(tempFile, System.Drawing.Imaging.ImageFormat.Gif);
}
...但我仍然没有任何运气。这仅保存背景图片而不保存墨水。任何想法我做错了什么?
提前致谢