【发布时间】:2014-04-03 16:16:53
【问题描述】:
我正在尝试保存由图形工具修改的图像,例如可以在图像上绘制的钢笔和形状。我已经使用带有背景图像的面板完成了这项工作,并尝试设置一个位图来保存此面板中的更改:
private void saveToolStripButton_Click(object sender, EventArgs e)
{
//sets panel1 contents as bit map to be saved at set locations
int width = panel1.Size.Width;
int height = panel1.Size.Height;
using (Bitmap bmp = new Bitmap(width, height))
{
panel1.DrawToBitmap(bmp, new Rectangle(0, 0, width, height));
bmp.Save(@"C:\Users\Me\Pics\testBitmap.jpeg", ImageFormat.Jpeg);
}
MessageBox.Show("Your image has been saved");
}
单击保存按钮后,图像保存正常,但使用图形工具所做的更改不显示。任何人都可以提出解决方案吗?
这里是一些关于我在面板中使用的图形工具的代码:
{
InitializeComponent();
//Create graphics object in panel1
g = panel1.CreateGraphics();
}
private void btnExit2_Click(object sender, EventArgs e)
{
this.Close();
}
Graphics g;
//set a drawing boolean
bool draw = false;
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
draw = true;
if (drawSq)
{
SolidBrush brush = new SolidBrush(Color.FromArgb(128, 255, 0, 0));
if (toolStripTextBox1.Text != "")
{
g.FillRectangle(brush, e.X, e.Y, Convert.ToInt32(toolStripTextBox1.Text), Convert.ToInt32(toolStripTextBox1.Text));
}
else if (toolStripTextBox1.Text == "")
{
MessageBox.Show("Please enter a shape size");
}
draw = false;
drawSq = false;
}
}
还有更多:
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
draw = false;
mouseX = null;
mouseY = null;
}
//null values allow freehand style drawing
int? mouseX = null;
int? mouseY = null;
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
//creates a pen tool and sets properties by mouse location
if (draw)
{
Pen pen = new Pen(btnColor.ForeColor, float.Parse(txtBox1.Text));
g.DrawLine(pen, new Point(mouseX ?? e.X, mouseY ?? e.Y), new Point(e.X, e.Y));
mouseX = e.X;
mouseY = e.Y;
}
}
【问题讨论】:
-
“由钢笔和形状等图形工具修改...”我认为我们需要查看该代码或知道它是如何完成的。显然,他们没有在面板上的图像上绘图。
-
图形工具在面板上运行良好。保存图像时它们根本不包括在内
-
什么图形工具?
-
钢笔、画笔、矩形等。它们都可以很好地绘制到面板上
-
不要使用 CreateGraphics,也不要存储图形对象。从图像中获取图形对象,用它绘制,关闭它。使用面板的绘制事件来绘制更新后的图像。现在您也可以保存该图像了。
标签: c# bitmapimage savefiledialog