Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 62

Поворот прямоугольника относительно точки

21.11.2015, 21:17. Показов 5318. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся со следующей проблемой. Есть Класс который содержит координаты вершин прямоугольника и галочки внутри него. Надо повернуть эту фигуру относительно любой вершины прямоугольника. Нужна процедуру которая расчитает координаты повёрнутой фигуры. Так же возможно ли вращать этот объект бесконечно?


Рисую фигуру таким способом:

Вызов следующих операторов в кнопке
C#
1
2
pictureBox1.Refresh();
pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen p = new Pen(Color.Black); 
 
            g.DrawLine(p, F.x1[0], F.y1[0], F.x1[1], F.y1[1]);
            g.DrawLine(p, F.x1[0], F.y1[0], F.x1[2], F.y1[2]);
            g.DrawLine(p, F.x1[1], F.y1[1], F.x1[3], F.y1[3]);
            g.DrawLine(p, F.x1[2], F.y1[2], F.x1[3], F.y1[3]);
 
            g.DrawLine(p, F.x2[0], F.y2[0], F.x2[1], F.y2[1]);
            g.DrawLine(p, F.x2[1], F.y2[1], F.x2[2], F.y2[2]);
 
        }
Координаты вершин прямоугольника в матрицах х1 и у1, координаты галочки в х2 и у2 соответственно.
C#
1
2
3
4
5
 public float[] x1 = new float[4];
        public float[] y1 = new float[4];
 
        public float[] x2 = new float[3];
        public float[] y2 = new float[3];
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2015, 21:17
Ответы с готовыми решениями:

Поворот прямоугольника относительно левого нижнего угла
Здравствуйте, прямоугольник рисуется так, что его левый нижний угол совпадает с началом декартовой системы координат и нужно его повернуть...

Поворот точки вокруг другой точки
Собственно задачу я перед собой поставил вращать вокруг центра основания треуольник... нашел формулу вот тут (**********), и впихнул ее в...

Поворот отрезка на произвольный угол относительно заданной точки
Доброго всем времени суток. Не как не получается найти метод для поворота отрезка Сам отрезок нарисовал System.Drawing.Pen myPen =...

3
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
21.11.2015, 21:19
Цитата Сообщение от Tandemic Посмотреть сообщение
Так же возможно ли вращать этот объект бесконечно?
нет.

Цитата Сообщение от Tandemic Посмотреть сообщение
Нужна процедуру которая расчитает координаты повёрнутой фигуры.
В чем проблема? Просто поверните на нужный угол все ключевые точки.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
21.11.2015, 21:30
Tandemic,
1) Извращение с float[] - убрать, вместо него - стандартный тип PointF[].
2) Вращение вокруг произвольной точки - реализуйте с помощью класса Matrix:
C#
1
2
3
            Matrix m = new Matrix();
            m.RotateAt(...);
            m.TransformPoints(...);
0
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 62
21.11.2015, 23:48  [ТС]
C#
1
2
3
4
5
6
 PointF[] p = new PointF[4];
 
            for (int i = 0; i < 4; i++)
                p[i] = new PointF(x1[i], y1[i]);
 
            Matrix myMatrix = new Matrix();
Дописал это, а как в майматрикс передать значения p чтобы её повернуть?

Добавлено через 46 минут
Вопрос исчерпан нашёл просто математическую формулу поворота точки относительно другой на заданный угол.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2015, 23:48
Помогаю со студенческими работами здесь

Поворот линии вокруг точки
Здравствуйте, как в PictureBoxX нарисовав вертикально лини, менять ее угол наклона от 90* до 0 спомощью трекбара ? (выглядит как дворники...

Масштабирование PictureBox относительно точки
Здравствуйте! Необходимо масштабировать PictureBox в форме относительно точки где находится курсор мыши. Кто-нибудь сталкивался с такой...

Масштабирование фигуры относительно произвольной точки
Есть фигура в pictureBox, заданная 3д точками, соединёнными линиями. Стоит задача масштабирования относительно произвольной точки. Не могу...

Определить, где находится текущая точка: внутри прямоугольника, снаружи, на границе прямоугольника
Представьте, что у вас на форме есть прямоугольник, границы которого на 10 пикселей отстоят от границ рабочей области формы. Необходимо...

Поворот прямоугольника на угол относительно точки, C#
Здравствуйте, проблема с поворотом прямоугольника. Четкого примера в нете не нашел, прошу помочь вот что написал, рисуется просто...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru