Люди подскажите: как работать с bitmap'ом? Может какие стандартные есть компоненты.
trminator
13.10.2003 17:37
Есть класс TBitmap - наследник TGraphics, у него свойство Canvas (тип - TCanvas), на канве можно рисовать. Рисунок можно загружать из файла или из ресурсов программы, можно записывать в файл. Можно даже объявить какой-то цвет как прозрачный. Подробнее можно посмотреть в справке по словам TBitmap, TGraphics и TCanvas, что непонятно - спросить здесь, может, кто поможет
Компонент ставишь и юзаешь!
Во время расчета строится график. Если строить его по TImage стандартными методами, типа Canvas.Line получается долго и изображение мигает. Хочу что-бы это делалось быстро и без миганий. ???
trminator
18.10.2003 10:06
Да, сталкивался с такой проблемой. Как раз тогда я и допер создать в памяти объект TBitmap, рисовал на его канве (теми же методами, что и на TImage), а когда все нарисовал, бросил его на TImage: Image1.Canvas.Draw(0,0,bitmap). Мигать перестало, и ускорилось намного.
А в 7-х дельфи, говорят, есть какое-то свойство DoubleBuffering у формы... говорят, что оно как раз "чтобы не мигало". Сам не пробовал, не знаю...
Сделал через TBitMap. Теперь не мигает, выводит быстро, но встает вопрос: а можно ли это изображение отмасштабировать? Например, вывести на экран только часть полного рисунка в BitMap, а потом, чтобы ещё и передвигаться по нему можно было.
trminator
11.11.2003 20:09
так по идее... сделать его побольше, когда на Image кинешь его, там скроллбары появятся
Ни фига не получается. Он просто сжимает рисунок до размеров Image'а.
trminator
28.11.2003 11:19
Свойство AutoSize у Image проставлено в false? если нет, то поставь, и будет счастье ;D Если оно и так false, то я не знаю
Сделал AutoSize=false, вроде получилось, только скроллы не появляются. Я на Image кидаю через Draw, а там сразу задаётся прямоугольник, который хочешь отобразить. Наверно поэтому и не получается.
trminator
18.12.2003 18:06
Вот. Точно должно работать. Кидаешь на форму TScrollBox, в него помещаешь TImage, у Image свойства: AutoSize - true, stretch - false (в предыдущем посте я похоже как раз перепутал AutoSize и Stretch...:-/ Stretch отвечает за растяжение-сжатие рисунка, AutoSize - за автоматическое изменение размера самого TImage'a). Вроде все сразу работает.
Если AutoSize=true, то вообще ничего не отображается, потому что этот гад скатывает Image до размера 0х0.
В целом я конечно сделал, но работает более чем странно. Размер Image увеличивается, появляются скроллы, но изображение остаётся того размера, которого Image было первоначально. В общем на словах объяснить трудно. В принципе могу сбросить по мылу мою пробную программку.
trminator
22.12.2003 10:53
0х0 даже после того как кинешь туда рисунок? Странно, конечно, но тогда можно попробовать поставить размеры Image'a вручную.
Дык так и пришлось сделать. Всё равно глюки.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.