Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103

Вращение сектора в окружности

10.01.2014, 18:43. Показов 2084. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как дописать код ,чтобы осуществить вращение сектора в окружности вокруг центра ?
Для вращения используем Matrix.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public partial class Form1 : Form
    {
        Timer timer = new Timer() { Interval = 100 };
        Matrix m = new Matrix();
        GraphicsPath rhombus;
        public Form1()
        {
            InitializeComponent();
           // this.Paint += Form1_Paint;
            timer.Tick += timer_Tick;
            rhombus = CreateRhombus(100f, 200F);
            m.Rotate(10, MatrixOrder.Append);
            timer.Start();
        }
        private void button1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
 
        }
 
        void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (rhombus == null) return;
            e.Graphics.DrawEllipse(new Pen(Color.Blue, 5), 200, 100, 300, 300);
            e.Graphics.TranslateTransform(this.ClientRectangle.Width / 2, this.ClientRectangle.Height / 2);
            e.Graphics.FillPath(Brushes.Blue, rhombus);
        }
 
        void timer_Tick(object sender, EventArgs e)
        {
            rhombus.Transform(m);
            this.Refresh();
        }
 
        GraphicsPath CreateRhombus(float w, float h)
        {
            GraphicsPath result = new GraphicsPath(FillMode.Winding);
           /* result.AddPolygon(new PointF[] {
                new PointF(-w / 2f,h/2f),
                new PointF(0f, 0f),
                new PointF(w / 2f, h / 2f),
                new PointF(0, h) });
            */
           // result.AddPie(205, 103, 290, 290, 270, 90);
            Rectangle rect = new Rectangle(205,103,290,290);
            result.AddPie(rect, 270, 90);
            return result;
        }
    }
}
P.S. На комменты не обращать!

Добавлено через 2 минуты
Первоначально писалось для вращения ромба.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.01.2014, 18:43
Ответы с готовыми решениями:

Заливка сектора окружности
Привет всем, пытаюсь изобразить круговую диаграмму, и хотелось бы залить сектора, подскажите пожалуйста как это делать? Код отрисовки...

Графика. Как отделить сектора окружности друг от друга?
Graphics g = e.Graphics; Pen p = new Pen(Color.Black); Rectangle rect = new Rectangle(50, 20, 200,...

Как найти площадь сектора окружности, зная координаты центра окружности и двух равноудаленных точек
Можно ли как-то найти площадь сектора, зная координаты центра (х0, у0) окружности и двух равноудаленных точек ( (х1, у1) и (х2, у2)) ?

1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
10.01.2014, 19:32
Ну точно так же, только строить нужно сектор:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    public partial class Form1 : Form
    {
        GraphicsPath pie;
        Timer timer = new Timer() { Interval = 100 };
        Matrix m = new Matrix();
 
        public Form1()
        {
            InitializeComponent();
            timer.Tick += timer_Tick;
            this.Paint += Form1_Paint;
            m.Rotate(10);
            pie = CreatePie(50, 20);
            timer.Start();
        }
 
        void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (pie == null) return;
            e.Graphics.TranslateTransform(this.ClientRectangle.Width / 2, this.ClientRectangle.Height / 2);
            e.Graphics.FillPath(Brushes.Red, pie);
        }
 
        void timer_Tick(object sender, EventArgs e)
        {
            pie.Transform(m);
            this.Refresh();
        }
        GraphicsPath CreatePie(float radius, float angle)
        {
            GraphicsPath result = new GraphicsPath();
            result.AddPie(-radius, -radius, 2 * radius, 2 * radius, 0, angle);
            return result;
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2014, 19:32
Помогаю со студенческими работами здесь

Нахождение кратчайшего сектора на окружности
Есть окружность с 5-ю точками на ней. Точки обозначены хаотично с одинаковым расстоянием друг от друга. К примеру (по часовой стрелке):...

Как отделить сектора окружности друг от друга
Как отделить сектора окружности друг от друга (как на рисунке)?

Определить, лежит ли точка с координатами внутри сектора окружности
Помогите решить задачу в Microsoft Visual Studio №1 Определить, лежит ли точка с координатами (x, y) внутри сектора окружности с...

Пиксельная закраска окружности разделенной на 3 сектора под 120 градусов
собственно такая проблема,разделить круг\окружность на 3 сегмента под 120 градусов без разницы как,вот мой код формула окружности...

Вращение тела по окружности
Подскажите, пожалуйста, как можно в 3d max сделать анимацию вращения сферы по окружности? так чтобы сфера была равноудалена во всех точках...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru