我试图理解这些图形,并且在Graphics.FromImage文档中,以它为例:
private void FromImageImage(PaintEventArgs e)
{
// Create image.
Image imageFile = Image.FromFile("SampImag.jpg");
// Create graphics object for alteration.
Graphics newGraphics = Graphics.FromImage(imageFile);
// Alter image.
newGraphics.FillRectangle(new SolidBrush(Color.Black), 100, 50, 100, 100);
// Draw image to screen.
e.Graphics.DrawImage(imageFile, new PointF(0.0F, 0.0F));
// Dispose of graphics object.
newGraphics.Dispose();
}
我对C#和Windows Forms还是陌生的,并且正在努力了解所有这些如何结合在一起。该代码如何运行,例如第一次加载表单或何时按下按钮?
答案 0 :(得分:1)
也许这会有所帮助。我有一个既利用Paint
事件进行绘制,又利用现有Image
进行绘制的示例。我创建了一个带有两个图片框的表单。每种情况一个。 pictureBox1
具有.Paint
事件的事件处理程序,而pictureBox2
仅在按下按钮时绘制。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
pictureBox1.BackColor=Color.Black;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
// The code below will draw on the surface of pictureBox1
// It gets triggered automatically by Windows, or by
// calling .Invalidate() or .Refresh() on the picture box.
DrawGraphics(e.Graphics, pictureBox1.ClientRectangle);
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
// The code below will draw on an existing image shown in pictureBox2
var img = new Bitmap(pictureBox2.Image);
var g = Graphics.FromImage(img);
DrawGraphics(g, pictureBox2.ClientRectangle);
pictureBox2.Image=img;
}
void DrawGraphics(Graphics g, Rectangle target)
{
// draw a red rectangle around the moon
g.DrawRectangle(Pens.Red, 130, 69, 8, 8);
}
}
因此,当您启动该应用程序时,由于尚未按下按钮,因此仅在左侧显示一个红色矩形。
,当按下按钮时,红色矩形显示在pictureBox2
中显示的图像上方。
没什么大不了的,但是确实可以。因此,根据您需要的操作模式(用户图形或图像批注),使用示例代码来了解如何进行操作。