На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Рисование дуги на C#


Недавно набросал простую программку с математическими расчетами и рисованием (демонстрацией). Положа руку на сердце, мне нравятся такие – быстро, с небольшим ТЗ, немного подумать, рассчитать и рисовать. Итак, вот текст задачи.



Нужна программа (дизайн интерфейса не особо важен), пользователь будет вводить определённые данные (длина дуги, радиус и центральный угол (пропорция)), и программа исходя из них, должна нарисовать дугу круга. В целом, это весь её функционал.

Ну что ж, надо значит делаем. Большинство программ (и это верно не только по отношению к языку си шарп) начинается с интерфейса. На форму набрасываем кнопку, параметры, выпадающий список и область для рисования.

По сути для рисования самой дуги требуется только один метод –

e.Graphics.DrawArc(redPen, rect, startAngle, sweepAngle);
где
  • redPen – экземпляр класса Pen(), в котором мы задаем цвет и толщину линии.
  • rect – прямоугольник (у нас квадрат), в который вписываем окружность
  • startAngle – начальный угол
  • sweepAngle – конечный угол
Так как у нас три варианта, то по по радиусу и центральному углу рисовать проще всего. Первый угол задаем ноль, а второй:

sweepAngle = (float)ugol;
то есть приводим к типу float.

Дальше по по радиусу и длине дуги вычисляем конечный угол:

sweepAngle = (180 * duga) / (3.14F * radius);
                if (sweepAngle > 360) {
                    MessageBox.Show("Такая дуга не существует!");
                    return;
                }
Обратите внимание, что проверяем, чтобы угол не был больше 360 градусов. Правда, метод DrawArc и в этом случае корректно отработает, но все же.

Ну и последний вариант - по длине дуги и углу

double R = (180 * duga) / (3.14 * ugol);
                radius = (int)R;
                sweepAngle = (float)ugol;
Здесь сначала вычисляем радиус и приводим его и угол к нужным типам. Квадрат для окружности вычисляется так.

Rectangle rect = new Rectangle(150 - radius, 150 - radius, radius * 2, radius * 2);
Вся программа (логика) рисования дуги на си шарп по различным параметрам уместилась в сотню строк кода.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, си шарп





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Блокируем посетителей по рефереру с помощью htaccess
Java: нахождение и скачивание файла


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.