Шаг 68.
Microsoft Visual C++ 2010. Начала.
Программирование. Графика. Графические примитивы. Эллипс и окружность

    На этом шаге мы рассмотрим рисование указанных фигур.

    Метод DrawEllipse чертит эллипс внутри прямоугольной области (рисунок 1).


Рис.1. Метод DrawEllipse рисует эллипс

    Если прямоугольник является квадратом, то метод рисует окружность.

    Инструкция вызова метода DrawEllipse в общем виде выглядит так:

  DrawEllipse(aPen, x, y, w, h);

    Параметр aPen, в качестве которого можно использовать один из стандартных карандашей или карандаш, созданный программистом, определяет вид (цвет, толщину, стиль) границы эллипса. Параметры x, y, w и h задают координаты левого верхнего угла и размер прямоугольника, внутри которого метод рисует эллипс.

    В инструкции вызова метода DrawEllipse вместо параметров x, y, w и h можно указать структуру типа Rectangle:

  DrawEllipse(aPen, aRect);

    Поля X и Y структуры aRect задают координаты левого верхнего угла области, внутри которой метод рисует эллипс, а поля Width и Height — размер.

    Метод FillEllipse рисует закрашенный эллипс. В инструкции вызова метода следует указать кисть (стандартную или созданную программистом), координаты и размер прямоугольника, внутри которого надо нарисовать эллипс:

  FillEllipse(aBrush, x, y, w, h);

    Кисть определяет цвет и способ закраски внутренней области эллипса.

    Вместо параметров x, y, w и h можно указать структуру типа Rectangle:

  FillEllipse(aBrush, aRect);

    Проиллюстрируем использование перечисленных методов следующим примером. В данном приложении изображается эллипс и закрашенная окружность. Вот текст приложения:

// конструктор
Form1(void)
{
	InitializeComponent();
	//
	//TODO: добавьте код конструктора
	//
	this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this,
            &Form1::drawCircle);

}
.   .   .   .   .
void drawCircle(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
	Rectangle aRect; // положение и размер прямоугольника
	//прямоугольник размером 60х30,
	// левый верхний угол которого в точке (10, 10)
	aRect = Rectangle(10,10,60,30); // положение и размер

	// вывод эллипса внутри прямоугольника
	e->Graphics->DrawEllipse(Pens::Black, aRect);

	// Желтый круг размером 50х50,
	// левый верхний угол которого в точке (100, 10)
	// вывод круга внутри квадрата
	e->Graphics->FillEllipse(Brushes::Gold, 100,10,50,50);
}
Архив проекта можно взять здесь.

    Результат работы приложения изображен на рисунке 2.


Рис.2. Результат работы приложения

    На следующем шаге мы рассмотрим построение дуги.




Предыдущий шаг Содержание Следующий шаг