Перейти к содержанию
  • Регистрация
  • 0
varnak

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

Вопрос

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

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


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

Рекомендуемые сообщения

  • 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

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

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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

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

×
×
  • Создать...