![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
В хэлпе написано, что метод RotateAt объекта GraphicsPath вращает свои path'ы по ч.с. Так и было у меня. Тока вот появились глюки в проге, стал разбираться... обнаружилось, что в одном месте метод вращает против ч.с.
Мои действия в программе: 1. Создаю объект GraphicsPath 2. Пихаю туда линию (AddLine) 3. Вращаю с помощью матрицы (Matrix.RotateAt(...)) относительно середины линии 4. Извлекаю новые координаты точек из массива Graphicspath.PathPoints Первым параметром Matrix.RotateAt указываю, скажем, 15 градусов (именно положительное малое число). Вращает против ч.с. В режиме отладки всё проверил: точка вращения - центр линии, вращаю на +15 градусов (не -15). Меняю знак угла (на -15) - вращает в другую сторону (по ч.с.). Пока поставил "-" перед углом - т.н. временная "заплатка"... __________ В другом месте программы (где RotateAt вращает по ч.с., как и положено) вращаю эллипс, скажем, на n градусов по ч.с.: 1. Вращаю центр эллипса относительно точки вращения на n градусов. Поскольку в GraphicsPath нельзя запихнуть точку (тока линию), то вращаю отрезок, соединяющий точку (0,0) и центр эллипса. 2. Инкрементирую угол наклона эллипса на n градусов Здесь с направлением вращения всё нормально - получаю ожидаемый результат. __________ з.ы. Вообще, объект GraphicsPath порой ведёт себя странно. Заметил следующую фичю/глюк: Запихиваю в GraphicsPath две прямые. Первая прямая: (0,0) (0,0), вторая: (0,0) (5,5). Т.е. первая прямая имеет нулевую длину. После запихивания создаётся не 4 точки, а 3 (!): (0,0), (0,0) и (5,5)... Пока объяснить это не могу... |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
dsi
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |