在 C# 中有什么方法可以拍摄空图像并在其上画线吗?如果可能的话,你能告诉我一个如何做到这一点的例子吗?我以前见过这样的东西,但我不太了解如何做到这一点,而且我在网上发现的所有地方都是从预先存在的图像中做的,然后在它上面绘制。我不想加载任何东西,只是我正在处理的界面的一个不错的小东西。我知道这听起来像是我在要求代码,但我所要求的只是如何在不加载任何内容的情况下绘制图像。
问问题
545 次
2 回答
1
您需要在表单上创建一个面板。缓冲区是一个Bitmap
.
然后使用panel1_MouseDown
-Event 绘制一些东西:
using (Graphics bufferGrph = Graphics.FromImage(buffer))
{
bufferGrph.DrawRectangle(new Pen(Color.Blue, 1), 1, 1, 100, 100); //Example
}
panel1.Invalidate();
然后使用panel1_Paint
- 事件在面板上绘制图像:
e.Graphics.DrawImageUnscaled(buffer, Point.Empty);
要保存面板的内容,请使用控件:
Bitmap bmp = new Bitmap(panel1.Width,panel1.Height);
panel1.DrawToBitmap(bmp, panel1.Bounds);
bmp.Save(@"MYPATH HERE");
于 2013-01-25T11:21:43.627 回答
1
您可以使用 GDI+(更具体地说是Graphics
类):
// Load an existing image into a Graphics object
using (var image = Image.FromFile(@"c:\work\input.png"))
using (var gfx = Graphics.FromImage(image))
{
// Draw a line on this image from (0x0) to (50x50)
gfx.DrawLine(new Pen(Color.Red), 0, 0, 50, 50);
// save the resulting Graphics object to a new file
using (var output = File.OpenWrite(@"c:\work\output.png"))
{
image.Save(output, ImageFormat.Png);
}
}
更新:
如果你想创建一个新图像:
// Create a new image 50x50 in size
using (var image = new Bitmap(50, 50))
using (var gfx = Graphics.FromImage(image))
{
// Draw a line on this image from (0x0) to (50x50)
gfx.DrawLine(new Pen(Color.Red), 0, 0, 50, 50);
// save the resulting Graphics object to a new file
using (var output = File.OpenWrite(@"c:\work\output.png"))
{
image.Save(output, ImageFormat.Png);
}
}
于 2013-01-25T11:17:23.807 回答