alex-y » 19.05.2020 20:43:10
Alex2013 Я отдельно отпишусь по поводу приложенного примера, когда просмотрю, уже скачал. А остальное. Вспоминается один проект примерно 15-летней давности. Та же фигня - графический контекст 600 дпи под распечатку из программы на принтере. С масштабированием и прочим таким. Формат А3. Там я рисунок разместил на скролл-боксе, а линейки просто от нуля перерисовывал, когда возникала нужда. Генерация такого рисунка размером с фактически отображаемую линейку - не проблема было даже на тогдашних селеронах-333. И писал я это на C++ Builder, а у него немного отличаются реализации компонентов от дельфийских, есть по мелочи разные свойства, которых в дельфях у компонентов нет или они не опубликованы. Да и сами линейки были просто в миллиметрах, реально проще каждый раз от нужной цифры генерировать с нуля было....
А вот лазарус, несмотря на то, что 2020-й год на дворе, не порадовал своей LCL. Нет, она не глючная, очень даже ниче так. Для конца 90-х, когда 4-е дельфи еще вовсю рулили, а билдер только появился. Но, видимо, жизнь ничему не учит разработчиков этой библы. Или они умышленно ее такой делают, не знаю...
А про перехват OnPaint.... Ну, тут всегда компромисс. Да, можно, не настолько это и заморочено, если вдуматься. Да только как-то хочется держать линейки в отдельных контейнерах, обладающих свойствами нормального визуального компонента. И тут уже без разницы, что это - панель, картинка, лишь бы была канва. Минимум ручной работы получается. Ведь при перехвате OnPaint тоже придется создавать под линейки структуру, описывающую ее состояние, методы и прочее. Мне в моей конкретной задаче это неудобно и слишком навороченно. И ведь, в конце концов, TScrollBox тоже не святым духом отображение делает. Та же самая CopyRect по канве. В винде - вообще стопудово, там GDI используется опосредованно через цепочку вызовов. В иксах - ну, у меня лазарь на базе GTK... Такая же фигня, в иксах есть библа типа виндовской GDI с тем же примерно набором функций. Только через GTK путь к ней более длинный выходит...
Поэтому, наверное, где-то перехват OnPaint удобнее, а где-то согласиться на избыточность штатных методов при очень простом программирвоании.
Добавлено спустя 31 минуту 4 секунды:
Alex2013 Посмотрел "подзорную трубу". В принципе, все то же самое - просто отображаем в видимое окно TImage фрагмент теневой картинки. А тут ничего и не придумаешь больше. Если на данной конкретной машине программа под Wine спокойно справляется в реалтайме с захватом веб-камеры, то уж со статичной-то картинкой в нативной среде и на машине раз в 5 - 10 более мощной и говорить не о чем. Просто люблю кодить в тихом уютном местечке под пение птичек... А ноут у меня слабенький...