Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Как работать с bitmap'ом?

Автор: SAB 13.10.2003 12:38

Люди подскажите: как работать с bitmap'ом? Может какие стандартные есть компоненты.

Автор: Jonson 13.10.2003 14:38

А что именно тебе надо ?

Автор: trminator 13.10.2003 21:37

Есть класс TBitmap - наследник TGraphics, у него свойство Canvas (тип - TCanvas), на канве можно рисовать. Рисунок можно загружать из файла или из ресурсов программы, можно записывать в файл. Можно даже объявить какой-то цвет как прозрачный. Подробнее можно посмотреть в справке по словам TBitmap, TGraphics и TCanvas, что непонятно - спросить здесь, может, кто поможет smile.gif

Автор: CJ 18.10.2003 1:03

Компонент ставишь и юзаешь!

Автор: SAB 18.10.2003 9:59

Во время расчета строится график. Если строить его по TImage стандартными методами, типа Canvas.Line получается долго и изображение мигает. Хочу что-бы это делалось быстро и без миганий. ???

Автор: trminator 18.10.2003 14:06

Да, сталкивался с такой проблемой. Как раз тогда я и допер создать в памяти объект TBitmap, рисовал на его канве (теми же методами, что и на TImage), а когда все нарисовал, бросил его на TImage: Image1.Canvas.Draw(0,0,bitmap). Мигать перестало, и ускорилось намного.

А в 7-х дельфи, говорят, есть какое-то свойство DoubleBuffering у формы... говорят, что оно как раз "чтобы не мигало". Сам не пробовал, не знаю...

Автор: SAB 10.11.2003 11:32

Сделал через TBitMap. Теперь не мигает, выводит быстро, но встает вопрос: а можно ли это изображение отмасштабировать? Например, вывести на экран только часть полного рисунка в BitMap, а потом, чтобы ещё и передвигаться по нему можно было.

Автор: trminator 12.11.2003 0:09

так по идее... сделать его побольше, когда на Image кинешь его, там скроллбары появятся

Автор: SAB 28.11.2003 14:14

Ни фига не получается. Он просто сжимает рисунок до размеров Image'а.

Автор: trminator 28.11.2003 15:19

Свойство AutoSize у Image проставлено в false? если нет, то поставь, и будет счастье   ;D Если оно и так false, то я не знаю

Автор: SAB 18.12.2003 15:29

Сделал AutoSize=false, вроде получилось, только скроллы не появляются. Я на Image кидаю через Draw, а там сразу задаётся прямоугольник, который хочешь отобразить. Наверно поэтому и не получается.

Автор: trminator 18.12.2003 22:06

Вот. Точно должно работать. Кидаешь на форму TScrollBox, в него помещаешь TImage, у Image свойства: AutoSize - true, stretch - false (в предыдущем посте я похоже как раз перепутал AutoSize и Stretch...:-/ Stretch отвечает за растяжение-сжатие рисунка, AutoSize - за автоматическое изменение размера самого TImage'a). Вроде все сразу работает.

Автор: SAB 22.12.2003 13:57

Если AutoSize=true, то вообще ничего не отображается, потому что этот гад скатывает Image до размера 0х0.
В целом я конечно сделал, но работает более чем странно. Размер Image увеличивается, появляются скроллы, но изображение остаётся того размера, которого Image было первоначально. В общем на словах объяснить трудно. В принципе могу сбросить по мылу мою пробную программку.

Автор: trminator 22.12.2003 14:53

0х0 даже после того как кинешь туда рисунок? Странно, конечно, но тогда можно попробовать поставить размеры Image'a вручную.

Автор: SAB 27.12.2003 12:59

Дык так и пришлось сделать. Всё равно глюки.