我正在开发一个应用程序,用户可以在其中选择图片框中的图像。
之后,他可以右键单击图像并添加一个用户控件,该控件将再次显示图像和一些文本。此用户控件可以添加任意次。
用户还可以根据需要重新定位用户控件。
所有这些功能都已实施,并且运行正常。
现在,要求是将图像与用户控件一起保存。
在上方,您可以看到需要保存的完整图像。背面图像是图片框图像和用户控件(带文本的小图像)。
当用户点击“保存”按钮时,图像应作为单个图像保存在他的磁盘上。
这是 C#开发的 Windows应用程序。
我想知道是否可以实现此功能。如果是的话,请指导我正确的方向。
答案 0 :(得分:2)
如果您使用Graphics.DrawImage()创建位图的副本,则可以将这些图像绘制到其上。您需要计算这些控件的位置。
在这里查看DrawImage:http://msdn.microsoft.com/en-us/library/42807xh1.aspx
示例:
Bitmap copy = new Bitmap(OriginalBitmap);
Graphics g = Graphics.FromImage(copy);
g.DrawImage(arrowBitmap, new Point(..));
copy.Save(...);
答案 1 :(得分:2)
Microsoft已经考虑过一个非常简单直接的解决方案,包括以下步骤:
PictureBox
使用Panel
而不是使用Image
的{{1}}属性,而不是使用PictureBox
的{{1}}属性 注意:通过使用BackgroundImage
属性,您可以非常轻松地指示Panel
拉伸,中心或缩放图像(我假设 tile 的默认值在您的情况下不是一个好选项)
BackgroundImageLayout
置于Panel
使用PictureBox
方法,如下所示:
Panel
这将导致您的控件开始与图片一起呈现:
此外,如果你的场景允许,你可以简单地使用Control.DrawToBitmap
方法和任何包含你想要呈现的所有actor的控件,例如实际的private void button1_Click(object sender, EventArgs e) {
var bmp = new Bitmap(this.panel1.Width, this.panel1.Height);
this.panel1.DrawToBitmap(bmp, new Rectangle(Point.Empty, bmp.Size));
bmp.Save(@"D:\test.png", ImageFormat.Png);
}
。