Цртање елипсе и круга

У компјутерској графици, елипса и круг се цртају као облици уписани у правоугаоник, односно унутар правоугаоника чије координате и димензије дефинишу њихову позицију и величину. Класа Graphics у .NET Framework-у омогућава једноставно цртање ових облика методом DrawEllipse()

Цртање елипсе

Ова метода подразумева навођење оловке којом се црта облик, координата горњег левог угла правоугаоника у који је уписана елипса и ширина и висина правоугаоника. У следећем примеру…

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = e.Graphics;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    using (Pen olovka = new Pen(Color.Black, 3))
    {
        g.DrawEllipse(olovka, 50, 50, 150, 100);
    }
}

…оловком црне боје дебљине 3 пиксела, елипса је уписана у правоугаоник чији горњи леви угао има координате \((50, 50)\), а чија ширина је 150 и висина 100 пиксела.

Цртање елипсе

Метода DrawEllipse() има и преоптерећење где се координате и ширина и висина наводе као реални бројеви…

g.DrawEllipse(olovka, 50.0F, 50.0F, 150.0F, 100.0F);

…или где се, уместо координата, ширине и висине, наводи објекат класе Rectangle

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = e.Graphics;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    using (Pen olovka = new Pen(Color.Black, 3))
    {
        Rectangle pravougaonik = new Rectangle(50, 50, 150, 100);
        g.DrawEllipse(olovka, pravougaonik);
    }
}

…или RectangleF:

RectangleF pravougaonik = new RectangleF(50.0F, 50.0F, 150.0F, 100.0F);

Значи, уместо појединачног навођења координата, ширине и висине, можеш користити и објекте класа Rectangle или RectangleF, који инкапсулирају те податке.

Бојење елипсе

Ако желиш да попуниш унутрашњост елипсе, користи класу Brush и методу FillEllipse():

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = e.Graphics;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    using (Brush cetka = new SolidBrush(Color.Yellow))
    {
        g.FillEllipse(cetka, 50, 50, 150, 100);
    }
    using (Pen olovka = new Pen(Color.Black, 3))
    {
        g.DrawEllipse(olovka, 50, 50, 150, 100);
    }
}

Бојење елипсе

Већина програмера прво попуњава облик, па тек онда црта ивицу као у овом примеру. Ако прво нацрташ облик, попуњавање облика може да прекрије ивицу облика.

Метода FillEllipse() има иста преоптерећења као и метода DrawEllipse(), па можеш да их користиш паралелно у свакој ситуацији.

Цртање круга

Да би нацртао круг, уместо правоугаоника потребно је да наведеш квадрат – како су ширина и висина квадрата једнаки, добија се круг. На пример:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = e.Graphics;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    using (Pen olovka = new Pen(Color.Black, 3))
    {
        g.DrawEllipse(olovka, 10, 10, 110, 110);
    }
}

Цртање круга

Цртање и бојење елипси и кругова у Windows Forms апликацијама је једноставно и интуитивно. Комбинујући координате, величине и боје, могуће је креирати разноврсне и визуелно атрактивне графичке елементе.