Problemy z ogromną bitmapą

0

taki o to kodzik:
function RGBToRGBTriple(RGB: TColorRef): TRGBTriple;
var
R, G, B: Byte;

function GetRValue(rgb: DWORD): Byte;
begin
FillChar(Result, SizeOf(Result), 0);
Result := Byte(rgb);
end;

function GetGValue(rgb: DWORD): Byte;
begin
FillChar(Result, SizeOf(Result), 0);
Result := Byte(rgb shr 8);
end;

function GetBValue(rgb: DWORD): Byte;
begin
FillChar(Result, SizeOf(Result), 0);
Result := Byte(rgb shr 16);
end;

begin
FillChar(Result, SizeOf(result), 0);
R:=GetRValue(RGB);
G:=GetGValue(RGB);
B:=GetBValue(RGB);
with Result do
begin
Blue:=B;
Green:=G;
Red:=R;
end;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
X, Y, Color: Cardinal;
BMP: TBitmap;
rgbarr: TRGBTripleArray;
begin
BMP:=TBitmap.Create;
X:=$FFFFFF div 2;
Y:=$FFFFFF-X;
BMP.PixelFormat:=pf24bit;
BMP.Width:=X;
BMP.Height:=Y;
Color:=0;
For y:=0 to BMP.Height-1 do
begin
rgbarr:=BMP.ScanLine[Y];
For x:=0 to BMP.Width-1 do
begin
rgbarr[x]:=RGBToRGBTriple(Color);
Color:=Color+1;
end;
end;
BMP.SaveToFile('C:Mala bitmapa.bmp');
BMP.Free;
end;

Od razu jak kliknę na butona na dzień dobry sypie się z out of system resources (wykończyły sie systemnyje zasoby). Nawet nie zaczoł robić (dzieje się tak koło BMP.width) a się sypie. bitmapa końcowa powinna zawierać wszystkie 24-bitowe kolory (czyli jakieś 16777215 unikatowych kolorów) i być wielkości około 50 MB

0

wydaje mi sie ze kolor ma byc dlugoscia??

1 użytkowników online, w tym zalogowanych: 0, gości: 1