画一个矩形

Luc*_*sen 3 c# drawing winforms

出于某种原因,当我运行程序时,矩形不会显示.但代码运行没有任何错误.我究竟做错了什么?

(我使用csc.exe编译代码,我用notepad ++编写)

绘图代码:

Graphics g = myform.CreateGraphics();
Pen selPen = new Pen(Color.Blue);
g.DrawRectangle(selPen, 10, 10, 50, 50);
g.Dispose();
Run Code Online (Sandbox Code Playgroud)

完整代码:

using System;
using System.Windows.Forms;
using System.Drawing;

public class Hello1
{

    public static void Main()
    {

        Form myform = new Form();

        myform.Text = "Main Window";
        myform.Size = new Size(640, 400);
        myform.FormBorderStyle = FormBorderStyle.FixedDialog;
        myform.StartPosition = FormStartPosition.CenterScreen;


        Graphics g = myform.CreateGraphics();
        Pen selPen = new Pen(Color.Blue);
        g.DrawRectangle(selPen, 10, 10, 50, 50);
        g.Dispose();

        myform.ShowDialog();

    }

}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*try 6

您可以在Form.OnPaint方法覆盖中或Form.Paint仅在事件处理程序中绘制表单.
所以你需要创建一个继承自的新类Form:

public class MyForm : Form
{
}
Run Code Online (Sandbox Code Playgroud)

将以下代码添加到您的表单:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    Graphics g = e.Graphics;
    using (Pen selPen = new Pen(Color.Blue))
    {
        g.DrawRectangle(selPen, 10, 10, 50, 50);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以myform.Paint按如下方式订阅活动:

myform.Paint += (o, e) => {
    Graphics g = e.Graphics;
    using (Pen selPen = new Pen(Color.Blue))
    {
        g.DrawRectangle(selPen, 10, 10, 50, 50);
    }
};
Run Code Online (Sandbox Code Playgroud)