Понимание небольшого фрагмента кода на C # с использованием paint () - PullRequest
1 голос
/ 28 мая 2011

Я новичок в C # (использую Visual C # 2010), и я пытался сделать простую игру, в которой будет прыгать, типа шарика,

Я использовал графический филллипс, чтобы сделать мяч, теперь у меняэтот код со мной,

protected override void OnPaint( PaintEventArgs e)
{
    //System.Drawing.Graphics gobj;
    gobj = this.CreateGraphics();
    Pen pen = new Pen(System.Drawing.Color.LightSkyBlue, 6);
    SolidBrush brush = new SolidBrush(System.Drawing.Color.Magenta);
    Rectangle myRectangle = new Rectangle((PointToClient(Cursor.Position).X), PointToClient(Cursor.Position).Y, 250, 200);

    gobj.DrawRectangle(pen, myRectangle);
    gobj.FillEllipse(brush, myRectangle);
} 

, когда я запускаю этот код, я продолжаю получать много кругов и прямоугольников, всплывающих только под частью экрана, но разве он не должен рисовать только один круг ??

Пожалуйста, помогите мне понять это ??

Ответы [ 3 ]

2 голосов
/ 28 мая 2011

Вы рисуете прямоугольник с помощью метода DrawRectangle, а затем кружите с помощью FillEllipse, вам нужно использовать только FillEllipse.И, как сказал Микант, вам не нужно создавать графику - используйте e.Graphics.Вот код:

protected override void OnPaint(PaintEventArgs e)
{
    SolidBrush brush = new SolidBrush(System.Drawing.Color.Magenta);
    e.Graphics.FillEllipse(brush, (this.Height / 2) - 40, (this.Width / 2) - 40, 80, 80);
}

Это рисует круг в центре формы.

Удачи в экспериментах и ​​обучении!

2 голосов
/ 28 мая 2011

Это действительно должен быть комментарий, но у меня пока недостаточно прав!

Я привык бы использовать с помощью оператора при работе с типами, которые используют неуправляемые ресурсы, такие как Pen и Font.Это обеспечит правильное использование IDisposable объектов.

1 голос
/ 28 мая 2011

только не забывайте никогда не использовать CreateGraphics метод (особенно внутри OnPaint). замените все свои gobj на e.Graphics и наслаждайтесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...