在 Form1 的顶部,我做了:Bitmap bmp;
在绘制事件中,我正在绘制文件pictureBox
和bmp
文件:
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
SolidBrush brush;
Pen p = null;
Point connectionPointStart;
Point connectionPointEnd;
Graphics g = e.Graphics;
bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics bitmapGraphics = Graphics.FromImage(bmp);
//g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
moveCounter++;
label6.Text = moveCounter.ToString();
brush = new SolidBrush(Color.Red);
p = new Pen(brush);
for (int idx = 0; idx < wireObject1._point_X.Count; ++idx)
{
Point dPoint = new Point((int)wireObject1._point_X[idx], (int)wireObject1._point_Y[idx]);
dPoint.X = dPoint.X - 5; // was - 2
dPoint.Y = dPoint.Y - 5; // was - 2
Rectangle rect = new Rectangle(dPoint, new Size(10, 10));
g.FillEllipse(brush, rect);
bitmapGraphics.FillEllipse(brush, rect);
// g.FillEllipse(brush, rect);
}
for (int i = 0; i < wireObject1._connectionstart.Count; i++)
{
int startIndex = wireObject1._connectionstart[i];
int endIndex = wireObject1._connectionend[i];
connectionPointStart = new Point((int)wireObject1._point_X[startIndex], (int)wireObject1._point_Y[startIndex]);
connectionPointEnd = new Point((int)wireObject1._point_X[endIndex], (int)wireObject1._point_Y[endIndex]);
p.Width = 2;
g.DrawLine(p, connectionPointStart, connectionPointEnd);
bitmapGraphics.DrawLine(p, connectionPointStart, connectionPointEnd);
}
}
我在绘制事件中为 bmp 文件做了一个新实例。我还为 bmp 文件创建了一个新的图形变量。我在pictureBox中绘制或填充椭圆的每个地方我也将它绘制到bmp文件中。
现在在我做的保存功能中:
private void SavePictureBoxToBitmap()
{
//PbToBitmap++;
//String tempFile = @"d:\PictureBoxToBitmap\" + PbToBitmap.ToString("D6") + bmp;
bmp.Save(@"d:\PictureBoxToBitmap\bit.bmp");
}
如果我在做 bmp.Save ,它会在硬盘上保存一个白色的 bmp 文件,里面只有图纸。如果我在做pictureBox1.Image.Save,它会在硬盘上保存一个文件,里面只有pictureBox中的图片,没有图纸。
我怎样才能将它结合起来,这样我就可以创建一个保存行/命令,它会在硬盘上创建一个带有pictureBox图像和图纸的bmp文件?