Помощь - Поиск - Пользователи - Календарь
Полная версия: Как работать с bitmap'ом?
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
SAB
Люди подскажите: как работать с bitmap'ом? Может какие стандартные есть компоненты.
Jonson
А что именно тебе надо ?
trminator
Есть класс TBitmap - наследник TGraphics, у него свойство Canvas (тип - TCanvas), на канве можно рисовать. Рисунок можно загружать из файла или из ресурсов программы, можно записывать в файл. Можно даже объявить какой-то цвет как прозрачный. Подробнее можно посмотреть в справке по словам TBitmap, TGraphics и TCanvas, что непонятно - спросить здесь, может, кто поможет smile.gif
CJ
Компонент ставишь и юзаешь!
SAB
Во время расчета строится график. Если строить его по TImage стандартными методами, типа Canvas.Line получается долго и изображение мигает. Хочу что-бы это делалось быстро и без миганий. ???
trminator
Да, сталкивался с такой проблемой. Как раз тогда я и допер создать в памяти объект TBitmap, рисовал на его канве (теми же методами, что и на TImage), а когда все нарисовал, бросил его на TImage: Image1.Canvas.Draw(0,0,bitmap). Мигать перестало, и ускорилось намного.

А в 7-х дельфи, говорят, есть какое-то свойство DoubleBuffering у формы... говорят, что оно как раз "чтобы не мигало". Сам не пробовал, не знаю...
SAB
Сделал через TBitMap. Теперь не мигает, выводит быстро, но встает вопрос: а можно ли это изображение отмасштабировать? Например, вывести на экран только часть полного рисунка в BitMap, а потом, чтобы ещё и передвигаться по нему можно было.
trminator
так по идее... сделать его побольше, когда на Image кинешь его, там скроллбары появятся
SAB
Ни фига не получается. Он просто сжимает рисунок до размеров Image'а.
trminator
Свойство AutoSize у Image проставлено в false? если нет, то поставь, и будет счастье   ;D Если оно и так false, то я не знаю
SAB
Сделал AutoSize=false, вроде получилось, только скроллы не появляются. Я на Image кидаю через Draw, а там сразу задаётся прямоугольник, который хочешь отобразить. Наверно поэтому и не получается.
trminator
Вот. Точно должно работать. Кидаешь на форму TScrollBox, в него помещаешь TImage, у Image свойства: AutoSize - true, stretch - false (в предыдущем посте я похоже как раз перепутал AutoSize и Stretch...:-/ Stretch отвечает за растяжение-сжатие рисунка, AutoSize - за автоматическое изменение размера самого TImage'a). Вроде все сразу работает.
SAB
Если AutoSize=true, то вообще ничего не отображается, потому что этот гад скатывает Image до размера 0х0.
В целом я конечно сделал, но работает более чем странно. Размер Image увеличивается, появляются скроллы, но изображение остаётся того размера, которого Image было первоначально. В общем на словах объяснить трудно. В принципе могу сбросить по мылу мою пробную программку.
trminator
0х0 даже после того как кинешь туда рисунок? Странно, конечно, но тогда можно попробовать поставить размеры Image'a вручную.
SAB
Дык так и пришлось сделать. Всё равно глюки.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.