Графика Windows Forms не рисуется

1

У меня есть код, который выглядит довольно простым и должен рисовать эллипс, но он, похоже, не появляется. Вот мой код:

public partial class ThreeBodySim : Form
{

    public ThreeBodySim()
    {
        InitializeComponent();
        this.DoubleBuffered = true;
        Graphics graphics = displayPanel.CreateGraphics(); // Separate panel to display graphics
        Rectangle bbox1 = new Rectangle(30, 40, 50, 50);
        graphics.DrawEllipse(new Pen(Color.AliceBlue), bbox1);
    }
}

Я пропустил что-то важное?

  • 1
    Используйте событие краски. Ваша CreateGraphics не работает в конструкторе - форма еще не видна. CreateGraphics также будет игнорировать ваш DoubleBuffer.
Теги:
winforms
graphics

1 ответ

4
Лучший ответ

Используйте событие Paint() чтобы нарисовать вашу форму. Я рекомендую использовать PictureBox в форме, так как он не будет иметь столько мерцания.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        this.DoubleBuffered=true;
    }

    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

        Rectangle bbox1=new Rectangle(30, 40, 50, 50);
        e.Graphics.DrawEllipse(new Pen(Color.Purple), bbox1);
    }

    private void pictureBox1_Resize(object sender, EventArgs e)
    {
        pictureBox1.Invalidate();
    }
}

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню