| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > как листать графику на панели ? |
| Автор: -ser- 8.4.2005, 06:10 |
| какой механизм отрисовки графики на панели со скроллингом и в каком методе правильно отрисовывать. в С++, допустим, есть метод OnDraw, где мы нарисовали сразу все что нужно и потом без проблем скролируем и смотрим. А как правильно в .НЕТ? Если я рисую на панели с автоскроллом в методе Paint, то при каждом скроллинге соответственно и получаю одну и ту же картину. (контролы, ксли они есть на панели скролируются правильно) Мне что, самому программно отслеживать в какую сторону и на сколько мы пролистали? |
| Автор: stab 8.4.2005, 06:53 | ||
Используй для рисования координаты относительные к DisplayRectangle и все будет ок. Например:
Может как-то и проще можно... |
| Автор: mr.DUDA 8.4.2005, 07:01 | ||
Нужно использовать свойство AutoScrollPosition:
|
| Автор: -ser- 8.4.2005, 07:21 |
| я использую DrawLines, где у меня массив из полуторамиллиона точек. выходит что каждый раз мне надо корректировать координаты в самом массиве точек? |
| Автор: stab 8.4.2005, 10:21 | ||
тогда можно в самом начале вызвать TranslateTransform таким вот образом:
|
| Автор: -ser- 11.4.2005, 09:03 | ||
| это все работает нориально, а мне надо координаты не в пикселах, а в другой системе измерения (1 unit = 0.1 мм.) когда вставляю
|
| Автор: -ser- 12.4.2005, 05:25 |
| что, никто не сталкивался с этим? ведь стандартная задача. чего здесь не хватает? |
| Автор: mr.DUDA 12.4.2005, 07:33 | ||
Если бы речь шла о дюймах, а не о миллиметрах, то код был бы такой:
Для миллиметров, обе координаты надо дополнительно разделить на кол-во миллиметров в одном дюйме (не помню, сколько |
| Автор: -ser- 12.4.2005, 09:23 | ||
| уф, спасибо всем и особенно mr.DUDA! не один час на это потратил. одна строчка на с++ выливается в целый блок на с# но с универсальными возможностями. итак, может кому пригодится: панель с автоскроллингом с масштабом графика 1 unit = 0.1mm
|