![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Чтобы тянулся следом, как "резиновая" линия? На манер DrawReversibleLine ? Не существует такого метода? А как тогда сделать?
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
lioness, ты про что?
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
lioness, тут на самом деле 2 вопроса: как нарисовать "резиновую фигуру", тянущуюся за курсором; и как нарисовать повёрнутый эллипс. Вопрос номер 1 решается очень просто - частой перерисовкой. Вопрос номер 2 решается не так просто - выставлением угла поворота перед отрисовкой эллипса с пом. DrawEllipse:
-------------------- ![]() |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Конечно, два вопроса
Что-то у меня учебники плохие. Сейчас поискала в них про RotateTransform - и ничего... На microsoft пойду почитаю... |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
А почему у microsoft-a три конструктора для RotateTransform указано. Среди них - один с центром поворота, а у меня в Visual Studio подсказка выходит только для двоих: angle (угол, соответственно) и angle с MatrixOrder.
Может, у меня Visual Studio неправильный какой-нибудь? А простой конструктор с angle (The default center of rotation is the origin) крутит нелогично со своей ориджиновской точкой. Конструктор с тремя double (угол, координата, координата центра) - не жрЁтЬ |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Сначала можно передвинуть ориджин в центр эллипса с пом. TranslateTransform, где dx и dy - отрицательные координаты. Потом применить RotateTransform с указанием только угла. Потом рисовать эллипс.
З.Ы. А какая версия студии ? 2003 или 2005 ? -------------------- ![]() |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Здесь в бюро 2003. Да он повернул мне мой эллипс благополучно, но выглядит это приблизительно, как этот повернутый текст.
Вот даже если текст (горизонтально стоит исходный вариант). Если поворачивается вокруг левого-верхнего угла, то какого лешего начинает так "загребать" по спирале какой-то. Эллипсы у меня еще больше вразлет пошли... Попробую центр сместить. Спасибо, что помогаете |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Да вокруг какой точки он вращает-то???????
TranslateTransform старательно передвигает объекты на заданное локальное смещение. Разве это объявление центра?? А вот Rotate ВОКРУГ чего крутит ! Я была уверена вокруг левого верхнего угла прямоугольника, который опИсывает эллипс. Но что-то делает не то: крутанет и сместит куда-то |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
lioness, для эллипса всё похоже вертится вокруг левой верхней вершины прямоугольника, описывающего этот эллипс.
-------------------- ![]() |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Да, это я уже заметила. Оказывается, вот что меня спутало и не знаю, как это исправить.
Если я смещаю с помощью TranslateTransform (если не сделаю сдвиг, то он, зараза, норовит повернуться вокруг нулевой точки). Потом поворачиваю на нужный мне угол. Все нормально ОДИН раз. На следующей фигуре начинает плясать от последнего встретившегося транслейта и angle и, кажется, суммирует предыдущий с текущим. Попробовала проэкспериментировать с MatrixOrder.Append и Prepend - что-то как мертвому припарки. На простом примере я рисую эллипс, потом сдвигаю угол Rotate ВЗАД Но если уже идет все в динамике: я указываю мышкой направление для рисования эллипса, то все эти транслейты и ротации "утаскивают" эллипс вообще в сторону за пределы окна. А "резиновый" эллипс у меня уже работает, НО ТОЛЬКО КОГДА Я ЕГО НЕ ПОВОРАЧИВАЮ. Он увеличивается и уменьшается следом за движением мышки, но только в горизонтальной позиции. А я хочу, чтобы он увеличивался от точки, где был MouseDown и вытягивался под любым углом следом за текущей позиции мышки. Но как мне "обнулить" Rotate и Translate Добавлено @ 16:08 Вот если не сделать в этом коде движение с "минусом" ( я выделила звездочками), то последний эллипс уедет резко вправо. Рисуются просто все подряд, но угол наклона последнего я подсчитываю по двум точкам.
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
А, ну так если только в этом дело - специально для сохранения и восстановления состояния Graphics (повороты, translate, scale - в общем, трансформации) служит пара методов Save / Restore класса Graphics. Просто вызываем Save до Translate/Rotate, и после отрисовки одной фигуры вызываем Restore. -------------------- ![]() |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Во ! Чего нашла http://www.c-sharpcorner.com/Code/2002/Mar...inesNShapes.asp
ПодпИсано: энтузиаст из Бразилии Вот он что-то изобразил с Bitmap... Я так пока не умею... Мож, так легче прорисовывать А эллипс-то у него резиновый т-о-л-ь-к-о вертикально-горизонтально P.S. Щас попробую Restorе |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Вот пример где эллипс можно растягивать, крутить и двигать по форме:
-------------------- ![]() |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
ПОЛУЧИЛОСЬ!!! Уряяяя ! Правда, кривовато у меня эллипс переходит из квадрантов в квадрант по оси ОY, слегка смещение я чегой-то где-то подвираю. Но с геометрией сейчас мне недосуг. Как говорил, Василий Иванович, "да мне тоже не до сук, но вроде ... надА ..."
Вобщем, бегают эллипсы по экрану, как хотелось пару дней назад
ТЕМА БЛАГОПОЛУЧНО ЗАКОНЧЕНА Если только кому-нибудь поупражняться еще захочется mr.DUDA Большое русское мерси ! В Ваш вариантик сейчас тоже вникну. Потом еще чего-нибудь придумаю. Мне тут велено освоить за месяц. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |