我要保存pictureBox1中的图像,包括图形。
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
e.Graphics.DrawRectangle(Pens.Green, 0, 0, pictureBox1.Width - 1, pictureBox1.Height - 1);
Pen p = new Pen(Color.Red);
e.Graphics.DrawLine(p, 256, 0, 256, 512);
e.Graphics.DrawLine(p, 0, 256, 512, 256);
DrawPieOnPicturebox(e.Graphics);
}
public void DrawPieOnPicturebox(Graphics myPieGraphic)
{
Color myPieColors = Color.FromArgb(150, Color.LightGreen);
Size myPieSize = new Size((int)distanceFromCenterPixels, (int)distanceFromCenterPixels);
Point myPieLocation = new Point((pictureBox1.Width - myPieSize.Width) / 2, (pictureBox1.Height - myPieSize.Height) / 2);
DrawMyPie(myPiePercent, myPieColors, myPieGraphic, myPieLocation, myPieSize);
}
int counter = 0;
public void DrawMyPie(int myPiePerecent, Color myPieColor, Graphics myPieGraphic, Point
myPieLocation, Size myPieSize)
{
using (SolidBrush brush = new SolidBrush(myPieColor))
{
myPieGraphic.FillPie(brush, new Rectangle(myPieLocation, myPieSize), Convert.ToSingle(myPiePerecent * 360 / 100), Convert.ToSingle(15 * 360 / 100));
}
myBitmap = new Bitmap(pictureBox1.Image);
myBitmap.Save(@"d:\" + counter + "mybitmap1.bmp");
myBitmap.Dispose();
counter++;
}
它正在pictureBox1中保存图像,但没有绘制的FillPie。我想将绘制的FillPie也添加到保存的位图中。
1条答案
按热度按时间wdebmtf21#
我认为最好的办法是使用myPieGraphic.DrawImage,然后使用myPieGraphic.FillPie,最后使用保存方法。
目前还不清楚这是如何在您的应用程序分层,但我假设你有一个图片框中的图像,然后你画在它上面使用图形?
这样做将呈现到单独的“层”,可以说它们不是相同的图像/图形。如果你用相同的图形绘制图像和饼图,你可以直接保存它。
我想那会产生你想要的结果。
请参阅所有图形方法的链接:https://learn.microsoft.com/en-us/dotnet/api/system.drawing.graphics.addmetafilecomment?view=dotnet-plat-ext-7.0
编辑:回答评论。