3 / 3 / 1
Регистрация: 10.12.2009
Сообщений: 22
1

Graphics.DrawLine

14.10.2015, 06:54. Показов 2975. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Использовал и портировал пример с этой ссылки http://stackoverflow.com/quest... nd-move-it
Все работает великолепно, Линии рисуются на форме. Проблема в растягивании формы. я поставил контрол подальше в право, и в конструкторе формы autoscroll = true. теперь если запустить приложение видим такую картину (1 скрин).
Если ползунок прокрутить в право и дождаться перерисовки формы (событие "onpaint") можно увидеть то что видно на втором скрине. Т.е. эти линии съезжают.
Может кто подкинуть идею как заставить в этом случае их оставаться на месте ?
Миниатюры
Graphics.DrawLine   Graphics.DrawLine  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2015, 06:54
Ответы с готовыми решениями:

Как реализован метод DrawLine и другие, описанные в классе Graphics
На msdn не удосужились описать способ работы методов, там всего-лишь приведён пример...

Метод Graphics.DrawLine(Int32, Int32, Int32, Int32) Узнать координаты всех точек данной прямой
Как я могу получить координаты всех точек, создаваемых данных методом? Мне необходимо это в...

Graphics.SetClip Method (GraphicsPath) и Graphics.Clear Method vs Graphics.FillPath Method (System.Drawing)
У нас два способа залить форму: 1. Graphics.SetClip Method (GraphicsPath) and Graphics.Clear ...

DrawLine в Panel
Здравствуйте. Необходимо вывести в Panel много строк, пусть даже с числами. У меня вроде...

6
Эксперт .NETАвтор FAQ
10409 / 5139 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
14.10.2015, 08:52 2
Reborm,
1) Пример на strackoverflow - ужасен. Это ж надо догадаться генерить bmp, что бы опредлелить клик по линии. В общем - говнокод.
2) Для решения вашей проблемы - вставьте в форму такой метод:
C#
1
2
3
4
5
        protected override void OnScroll(ScrollEventArgs se)
        {
            base.OnScroll(se);
            Invalidate();
        }
3) Но я бы не советовал делать как в примере на strackoverflow. Вот здесь нормальное решение: Редактирование объектов GDI+ (Перемещение, растягивание)
1
3 / 3 / 1
Регистрация: 10.12.2009
Сообщений: 22
15.10.2015, 09:08  [ТС] 3
Storm23,
Добавил ваш код в свой проект, добавил в конструкторе формы событие scroll, изменилось только то что теперь при скроле формы линии быстрее перерисовываются =) . Но так же сьезжают.
Я благодарен вам за ссылки, но слишком поздно я их увидел. В проекте уже слишком много функционала, логики и пр., связанного с тем примером что я скинул в начале темы.
Я бы все же хотел бы приладить этот, как вы выразились, "говнокод". Если это возможно, конечно.
Хм. А если приладить на форму громадный пикчербокс и рисовать уже на нем, а не на форме ?
0
Эксперт .NETАвтор FAQ
10409 / 5139 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.10.2015, 09:18 4
Цитата Сообщение от Reborm Посмотреть сообщение
Добавил ваш код в свой проект, добавил в конструкторе формы событие scroll, изменилось только то что теперь при скроле формы линии быстрее перерисовываются =) . Но так же сьезжают.
Ну я скопировал тот код со stackoverflow, добавил код для OnScroll, и линии НЕ съезжают. Следовательно причина в чем то еще. Но в чем - я сказать не могу, поскольку не вижу вашего кода целиком.
0
3 / 3 / 1
Регистрация: 10.12.2009
Сообщений: 22
15.10.2015, 09:38  [ТС] 5
Вы не могли бы выложить весь проект ? например в .rar
0
Эксперт .NETАвтор FAQ
10409 / 5139 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.10.2015, 10:02 6
Лучший ответ Сообщение было отмечено Reborm как решение

Решение

Reborm, Вот WindowsFormsApplication318.zip
Сделал также оптимизацию прокрутки, что бы изображение совсем не дергалось при скроллинге.
1
3 / 3 / 1
Регистрация: 10.12.2009
Сообщений: 22
15.10.2015, 12:39  [ТС] 7
Благодарю.
0
15.10.2015, 12:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2015, 12:39
Помогаю со студенческими работами здесь

Panel+picturebox+drawline
Здравствуйте. Помогите с такой проблемой: Пытаюсь на picturebox отрисовать линию и потом добавить...

Построить параллелепипед с использованием DrawLine
Помогите построить вот такой квадрат через DraweLine. Заранее благодарен.

DrawImage vs Drawline & Drawlines
Привет всем, Насколько понимаю: DrawImage - метод, суть которого в выводе заранее заготовленной...

Нарисовать графический рисунок, используя DrawLine и DrawCurve в pictureBox
Здравствуйте, я решила нарисовать графический рисунок используя DrawLine и DrawCurve в pictureBox. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru