Дорисовка изображения с помощью OpenGl в событиях IDocumentFrameNotify

Автор A.n.d.r.e.w, 19.04.25, 13:50:47

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

IgorT

Цитата: Lemieux от 22.04.25, 11:26:15А сколько весит файл? Просто у нас есть Э7, которое весит 100 мб, там всё лагает.
На каком железе?

A.n.d.r.e.w

Цитата: Lemieux от 22.04.25, 10:53:11Как Вы предлагаете определять ближайшую точку?

Также как работает выбор объектов тыком курсора.
Когда вы тыкаете в экран и отрезок выделяется,
как программа понимает что вы ткнули в этот конкретный
отрезок, который является просто (x1, y1, x2, y2)?

Не знаю правда как это реализовано в Компас, но когда я
экспериментировал с подобным то делал так.
При перерисовке окна рисуется не только изображение
которое видит пользователь, но еще несколько "скрытых".
Эти слои это просто массивы пикселей, блоки памяти.
Рисование в памяти происходит быстро.
В одном из них рисуется все тоже самое что на экране
только фон черный а каждый отдельный объект рисуется своим
цветом. Цвет как известно это 3 байта, можно еще добавить
альфу и будет 4 байта на каждый пиксель. Таким образом
код цвета-референс или некий идентификатор объекта.
Когда вы тыкаете в экран, программа сканирует область
вокруг курсора и если находит пиксель с цветом >0 то вуаля.
По такому же принципу у меня работали и привязки.
Только к коду объекта добавлял еще тип привязки.
Точками рисовались привязки типа точки, линиями
привязки типа "выравнивание", всякие касания
и перпендикуляры вычислялись тогда когда
курсор "наткнулся" на конкретный объект.
Два объекта поймал, пробуем найти пересечение. Ну и т.д.

A.n.d.r.e.w

Цитата: IgorT от 22.04.25, 10:31:17Проверил на своём К21.
Заявленной особенности не наблюдаю.

У профессионалов, видимо, профессиональное железо )

Lemieux

Цитата: IgorT от 22.04.25, 11:40:23На каком железе?
Какая разница? На топовом. Вы ответьте, сколько у Вас файл весит.

IgorT


Lemieux

Цитата: A.n.d.r.e.w от 22.04.25, 11:42:07Не знаю правда как это реализовано в Компас, но когда я
экспериментировал с подобным то делал так.
При перерисовке окна рисуется не только изображение
которое видит пользователь, но еще несколько "скрытых".
Эти слои это просто массивы пикселей, блоки памяти.
Рисование в памяти происходит быстро.
В одном из них рисуется все тоже самое что на экране
только фон черный а каждый отдельный объект рисуется своим
цветом. Цвет как известно это 3 байта, можно еще добавить
альфу и будет 4 байта на каждый пиксель. Таким образом
код цвета-референс или некий идентификатор объекта.
Когда вы тыкаете в экран, программа сканирует область
вокруг курсора и если находит пиксель с цветом >0 то вуаля.
По такому же принципу у меня работали и привязки.
Только к коду объекта добавлял еще тип привязки.
Точками рисовались привязки типа точки, линиями
привязки типа "выравнивание", всякие касания
и перпендикуляры вычислялись тогда когда
курсор "наткнулся" на конкретный объект.
Два объекта поймал, пробуем найти пересечение. Ну и т.д.
Вы пиксели не в цикле перебираете? Или Вы просто дёргали функцию из OpenGL? Какая точность будет у такого метода? Эта точность будет зависеть от разрешения монитора?

Lemieux


p3452

ИМХО.
Все, что предлагает (продвигает) ТС:
1 - затратно по времени, объему кода, сопровождению;
2 - имеет альтернативные - простые решения;
3 - свидетельствует о неправильном подходе к организации приложения (программы).

Lemieux

Цитата: p3452 от 22.04.25, 12:08:01имеет альтернативные - простые решения;
Какие например. Расскажите, хотя бы, о парочке.


Цитата: p3452 от 22.04.25, 12:08:01свидетельствует о неправильном подходе к организации приложения (программы).
А как правильно?


UU

Цитата: IgorT от 22.04.25, 12:49:51Может быть К23 так себя ведёт?
Вести он может, как угодно, но графика - есть графика, я через GDI рисую.




A.n.d.r.e.w

#51
Цитата: Lemieux от 22.04.25, 11:57:03Вы пиксели не в цикле перебираете? Или Вы просто дёргали функцию из OpenGL? Какая точность будет у такого метода? Эта точность будет зависеть от разрешения монитора?

я перебираю пиксели которые попадают в "ловушку курсора" это где-то 15х15 пикс.
По цвету пикселя я определяю объект который попал в ловушку,
потом получаю сам объект и его точные параметры.. координаты вершин отрезка например.
Точность нормальная )

IgorT

Цитата: UU от 22.04.25, 14:16:58Вести он может, как угодно, но графика - есть графика, я через GDI рисую.
...
Какое отношение имеет Ваш ответ к поведению К23 при рисовании в эскизе в теме цепляния за графику, которой не видно на экране?  8-)

UU

Цитата: IgorT от 22.04.25, 14:25:25Какое отношение имеет Ваш ответ к поведению К23 при рисовании в эскизе в теме цепляния за графику, которой не видно на экране?  8-)
Вас не трогаю, Вы программируете?
НЕТ - что Вы тут делаете?

IgorT

Цитата: UU от 22.04.25, 14:27:27Вас не трогаю, Вы программируете?
НЕТ - что Вы тут делаете?
Сами спрашиваете, сами на свой вопрос отвечаете... бывает :-)))
Вы не проверите! Программирую. :angel:
Вот интересно, в посте #50 Вы для чего цитату цитировали?

UU

Цитата: IgorT от 22.04.25, 14:52:49Сами спрашиваете, сами на свой вопрос отвечаете... бывает :-)))
Вы не проверите! Программирую. :angel:
Вот интересно, в посте #50 Вы для чего цитату цитировали?
Вас, что-то не устроило?

A.n.d.r.e.w

Интересно. На этом форуме каждый топик заканчивается грызнёй,
или мне так везет?
Администратор, думаю тему можно закрывать.

Lemieux

Цитата: A.n.d.r.e.w от 22.04.25, 14:20:47я перебираю пиксели которые попадают в "ловушку курсора" это где-то 15х15 пикс.
Как Вы эти 225 пикселей выбираете?

IgorT

Цитата: UU от 22.04.25, 15:03:53Вас, что-то не устроило?
Аналогично. Вас что не устаивало в посте #49?

Lemieux

Цитата: A.n.d.r.e.w от 22.04.25, 15:07:02Интересно. На этом форуме каждый топик заканчивается грызнёй,
Ну мы с Вами вроде конструктивный диалог ведём.