Несколько GDI-преобразований для 2D-графики в C # - PullRequest
0 голосов
/ 07 мая 2011

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

MouseDown(object sender, MouseEventArgs e) - set the translate/rotate offset
MouseMove(object sender, MouseEventArgs e) - increment translate/rotate variables
OnPaint(Graphics graphics, float time)     - use Matrix object to do global transform

Проблема: после поворота графики, когда я затем их перевожу, они перемещаются в соответствии с преобразованием поворота.Нужно ли мне компенсировать это вращение в MouseDown и MouseMove, где я устанавливаю переменную перевода?

1 Ответ

0 голосов
/ 28 сентября 2014

Помните, MouseDown происходит только один раз. Я думаю, что в событии MouseDown, помимо установки смещения, вам необходимо преобразовать его. А также вам нужна переменная возможно

bool isMouseDown = true;

, чтобы помочь MouseMove указать, что он находится в состоянии "after mouseDown".

А в событии MouseMove, в основном, вы выполняете тот же процесс, что и в событии MouseDown, разница - это только координата мыши.

...