在C#中有什么办法可以拍摄一张空图像,例如在它上画线条吗?如果可能,你能告诉我一个如何做到这一点的例子吗?我以前见过这样的东西,但我不知道如何做到这一点,我发现在网上的任何地方都是从现有的图像中做到这一点,然后在它上面画画。我不想加载任何东西,对于我正在处理的接口来说只是一个不错的小东西。我知道这听起来像是在要求代码,但我要求的是如何在不加载任何内容的情况下绘制图像。
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
您需要在表单上创建一个面板。
缓冲区是Bitmap
。
然后使用panel1_MouseDown
- 事件来绘制内容:
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");