Как работать с bitmap'ом? |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Как работать с bitmap'ом? |
SAB |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 23 Репутация: 0 |
Люди подскажите: как работать с bitmap'ом? Может какие стандартные есть компоненты.
-------------------- Человек должен думать, а компьютер работать.
|
Jonson |
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 37 Репутация: 0 |
А что именно тебе надо ?
-------------------- Лутший язык тот, которым владееш в совершенстве.
|
trminator |
Сообщение
#3
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Есть класс TBitmap - наследник TGraphics, у него свойство Canvas (тип - TCanvas), на канве можно рисовать. Рисунок можно загружать из файла или из ресурсов программы, можно записывать в файл. Можно даже объявить какой-то цвет как прозрачный. Подробнее можно посмотреть в справке по словам TBitmap, TGraphics и TCanvas, что непонятно - спросить здесь, может, кто поможет
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
CJ |
Сообщение
#4
|
Пионер Группа: Пользователи Сообщений: 84 Пол: Мужской Репутация: 2 |
Компонент ставишь и юзаешь!
-------------------- * Origin: "It's MY LIFE!!! © Jhon Bon Jovi"
|
SAB |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 23 Репутация: 0 |
Во время расчета строится график. Если строить его по TImage стандартными методами, типа Canvas.Line получается долго и изображение мигает. Хочу что-бы это делалось быстро и без миганий. ???
-------------------- Человек должен думать, а компьютер работать.
|
trminator |
Сообщение
#6
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Да, сталкивался с такой проблемой. Как раз тогда я и допер создать в памяти объект TBitmap, рисовал на его канве (теми же методами, что и на TImage), а когда все нарисовал, бросил его на TImage: Image1.Canvas.Draw(0,0,bitmap). Мигать перестало, и ускорилось намного.
А в 7-х дельфи, говорят, есть какое-то свойство DoubleBuffering у формы... говорят, что оно как раз "чтобы не мигало". Сам не пробовал, не знаю... -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
SAB |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 23 Репутация: 0 |
Сделал через TBitMap. Теперь не мигает, выводит быстро, но встает вопрос: а можно ли это изображение отмасштабировать? Например, вывести на экран только часть полного рисунка в BitMap, а потом, чтобы ещё и передвигаться по нему можно было.
-------------------- Человек должен думать, а компьютер работать.
|
trminator |
Сообщение
#8
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
так по идее... сделать его побольше, когда на Image кинешь его, там скроллбары появятся
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
SAB |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 23 Репутация: 0 |
Ни фига не получается. Он просто сжимает рисунок до размеров Image'а.
-------------------- Человек должен думать, а компьютер работать.
|
trminator |
Сообщение
#10
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Свойство AutoSize у Image проставлено в false? если нет, то поставь, и будет счастье ;D Если оно и так false, то я не знаю
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
SAB |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 23 Репутация: 0 |
Сделал AutoSize=false, вроде получилось, только скроллы не появляются. Я на Image кидаю через Draw, а там сразу задаётся прямоугольник, который хочешь отобразить. Наверно поэтому и не получается.
-------------------- Человек должен думать, а компьютер работать.
|
trminator |
Сообщение
#12
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Вот. Точно должно работать. Кидаешь на форму TScrollBox, в него помещаешь TImage, у Image свойства: AutoSize - true, stretch - false (в предыдущем посте я похоже как раз перепутал AutoSize и Stretch...:-/ Stretch отвечает за растяжение-сжатие рисунка, AutoSize - за автоматическое изменение размера самого TImage'a). Вроде все сразу работает.
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
SAB |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 23 Репутация: 0 |
Если AutoSize=true, то вообще ничего не отображается, потому что этот гад скатывает Image до размера 0х0.
В целом я конечно сделал, но работает более чем странно. Размер Image увеличивается, появляются скроллы, но изображение остаётся того размера, которого Image было первоначально. В общем на словах объяснить трудно. В принципе могу сбросить по мылу мою пробную программку. -------------------- Человек должен думать, а компьютер работать.
|
trminator |
Сообщение
#14
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
0х0 даже после того как кинешь туда рисунок? Странно, конечно, но тогда можно попробовать поставить размеры Image'a вручную.
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
SAB |
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 23 Репутация: 0 |
Дык так и пришлось сделать. Всё равно глюки.
-------------------- Человек должен думать, а компьютер работать.
|
Текстовая версия | 29.04.2024 12:36 |