Делаю программу для рисования и работы с графами, делаю на делфи (да-да, я знаю что он стар как мир и ужасен, но кроме него я ничего не знаю пока что). И вот... я уже устал от стандартной канвы делфи, 70% всех проблем именно с ней. Может существует какой либо сторонний компонент (или еще что нибудь) ведущий себя более адекватно?
ЗЫ Проблем огромное множество, часть уже решены костылями, но это совсем не то, что я хотел бы видеть. Например - абсолютная невозможность управлять "наложением" элементов (что рисуется последним, то рисуется поверх всего остального), при сворачивании-разворачивании окошка канва чудесным образом удаляет все линии, при этом не трогая другие элементы (шейпы например).
ЗЗЫ Интересно, а здесь вообще есть кто нибудь, кто работает с делфи?
В моем понимании это может быть реализовано в виде линии и шейпа как независимых от канвы объектов. Но вот сам написать такие объекты я еще не в состоянии.
что рисуется последним, то рисуется поверх всего остального
Ну вообще говоря любая канва себя так ведет)) В html5 так же
при сворачивании-разворачивании окошка канва чудесным образом удаляет все линии, при этом не трогая другие элементы (шейпы например).
Я очень давно на Delphi не писал, но по-моему чтоб такого не происходило, надо все рисовать в объекте TBitmap, а на канву его выводить в событии onPaint.
Я знаю про это, но дело в том, что рисуется все динамически непосредственно во время работы программы, т.е. мне придется писать очередной костыль, который будет вычислять координаты начала и конца каждой линии и перерисовывать их. А тут еще всплывет первый пункт и все линии нарисуются поверх шейпов, т.е. придется перерисовывать еще и все шейпы.
Direct-X например задействовать, но это наверно из пушки по воробьям.
Канва она в любом языке очень зыбка, это чуть ли не самый низкий уровень работы с изображением на экране - поэтому она так себя и ведет. Но это самый быстрый способ вывода изображений, остальные надстройки будут только вносить задержку.
Вообще, канву в таких случаях надо использовать только как окончательный вывод изображения, а саму картинку формировать и хранить в памяти отдельно.
@Alexeyslav Буду вам очень признателен если вы подскажете как это сделать. Я слышал есть что то связанное с Bitmap, но что это за зверь не смог разобраться.