Показать сообщение отдельно
  #3  
Старый 04.09.2013, 10:46
CynicRus CynicRus вне форума
Прохожий
 
Регистрация: 26.02.2013
Сообщения: 30
Версия Delphi: Lazarus, XE 3.
Репутация: 10
По умолчанию

Вот ещё шустрый пример из рабочего проекта:

Типы данных:

Код:
TRGB32 = packed record
    B, G, R, A: Byte;
  end;
  TRGB32Array = array [0..PixelMax-1] of TRGB32;
  PRGB32 = ^TRGB32Array;

pPixelArray = ^TPixelArray;
  TPixelArray = array [0..PixelMax-1] of TRGBTriple;

Код:
procedure CreateBitmapFromArr(w,h: integer; var bmp: TBitmap);
var
 i,j,dd: integer;
 Pixels: pPixelArray;

function RGBtoWinRGB(col: TRGB32):TRGBTriple;
 begin
   result.rgbtBlue:=col.B;
   result.rgbtGreen:=col.G;
   result.rgbtRed:=col.R;
 end;

begin
   dd:=0;
   bmp.PixelFormat := pf24bit;
   bmp.Width  := w;
   bmp.Height := h;
   for i := Bmp.Height - 1 downto 0 do
  begin
   Pixels:=Bmp.ScanLine[i];
   for j :=Bmp.Width - 1  downto 0  do
    begin
    Pixels[j]:=RGBToWinRGB(FData^[dd]);
    inc(DD);
    end;
  end;
end;

FData является переменной типа TRGB32.
Ответить с цитированием