Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Использование scanline для image


Автор: iff 14.8.2012, 16:06
Не могу вывести попиксельно изображение непосредственно в TImage.
Например:
Код

type TRow = array[word] of TRGBTriple; PRow = ^TRow;
var x, y: word;
const black: TRGBTriple = (rgbtBlue: 0; rgbtGreen: 0; rgbtRed: 0);
begin
  Image.Picture.Bitmap.Width := 500;
  Image.Picture.Bitmap.Height := 500;
  for y := 0 to 499 do
    for x := 0 to 499 do
      PRow(Image.Picture.Bitmap.ScanLine[y])[x] := black;
  Image.Refresh;
end;

или
Код

type TRow = array[word] of TRGBTriple; PRow = ^TRow;
var Row: PRow; x, y: word;
const black: TRGBTriple = (rgbtBlue: 0; rgbtGreen: 0; rgbtRed: 0);
begin
  Image.Picture.Bitmap.Width := 500;
  Image.Picture.Bitmap.Height := 500;
  for y := 0 to 499 do
  begin
    Row := Image.Picture.Bitmap.ScanLine[y];
    for x := 0 to 499 do
      Row[x] := black;
  end;
  Image.Refresh;
end;

конечно, можно создать отдельный bitmap, обработать его и загрузить в image (через св-во picture.bitmap).  Но не понятно именно почему непосредственный вывод не работает.

Добавлено через 8 минут и 25 секунд
Добавил
Код

Image.Picture.Bitmap.PixelFormat := pf24bit;

всё работает.

Добавлено через 11 минут и 49 секунд
Кстате, если загрузить в некий объект типа tbitmap изображение не 24-битное, а потом поставить "Bitmap.PixelFormat := pf24bit;", то его формат автоматически преобразуется и с ним можно будет работать как с 24-битным?

Автор: Illusion Dolphin 14.8.2012, 21:24
Цитата

Кстате, если загрузить в некий объект типа tbitmap изображение не 24-битное, а потом поставить "Bitmap.PixelFormat := pf24bit;", то его формат автоматически преобразуется и с ним можно будет работать как с 24-битным?

Да

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)