• 0
varnak

Помогите разобраться Delphi X7

Вопросы

Здравствуйте, помогите разобраться с битмапом.
В цикле,по таймеру происходит прорисовка пикселей разными цветами, одной строкой
(пикселей) по Х. Затем эта строка должна опуститься по Y на 1
и так до бесконечности. Задача сводится к прорисовке бесконечного водопада,
последняя строка всегда первая, предыдущие опускаются вниз.
В Delphi7,  я бы использовал CopyRect через буферный битмап, но тут его нет((
CopyfromBitmap не подходит, получается буферный битмап на 1 пиксель меньше.
Если проще... мне все время надо рисовать по X линию пикселей, потом ее и предыдущие
опускать вниз. Рисую на канве image.bitmap. (Делаю водопад спектра).
Подскажите куда копать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 ответа на этот вопрос

  • 0

TBitmap.Canvas.DrawBitmap Вам в помощь

Ну или можно использовать буферный TBitmapData и построчно, используя GetScanLine, копировать память.

Изменено пользователем dnekrasov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Спасибо за ответ.

Что-бы использовать TBitmap.Canvas.DrawBitmap , его же сначала нужно же получить?

Пробовал CopyfromBitmap через буферный битмап... Однако Дмитрий Осипов в своей книги

говорит:- "procedure CopyFromBitmap(const Source:Tbitnap);

                    procedure CopyFromBitmap(const Source:Tbitnap; SrcRect:Trect; DstX, DstY:integer);

Перечисленные процедуры копируют рисунок из образа Source. Единственное условие

корректой работы методов заключается в равенстве геометрических размеров образа-

источника и получателя."

Т.е. мне надо создать буферный битмап на 1 пиксель меньше по Y, далее

CopyFromBitmap(const Source:Tbitnap; SrcRect:Trect; DstX, DstY:integer) и отрисовка уже

TBitmap.Canvas.DrawBitmap?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
14 часов назад, varnak сказал:

Т.е. мне надо создать буферный битмап на 1 пиксель меньше по Y, далее

CopyFromBitmap(const Source:Tbitnap; SrcRect:Trect; DstX, DstY:integer) и отрисовка уже

TBitmap.Canvas.DrawBitmap?

А что мешает в буферной битмапке хранить точную копию исходной, а в DrawBitmap указывать нужные SrcRect и DestRect? По-моему Вы зациклились на необходимости использования CopyFromBitmap, а здесь она и не нужна вовсе (ИМХО) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вы действительно правы,  зациклился))

Большое спасибо, все получилось по указанным Вами-алгоритмом!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу