Witam, to mój pierwszy post na forum 4programmers, próbuję napisać własną klasę typu Canvas, tyle że na bazie dostępu do tablicy z pikselami w taki sposób jak do TBitmap za pomocą ScanLine.
procedure TForm1.Button1Click(Sender: TObject);
var
bi: tagBITMAPINFO;
a: array [0..200] of array [0..200] of LongWord;
p: plongwordarray;
begin
ZeroMemory(@bi, sizeof(tagBITMAPINFO));
bi.bmiHeader.biSize := sizeof(tagBITMAPINFOHEADER);
bi.bmiHeader.biWidth := 201;
bi.bmiHeader.biHeight := -201;
bi.bmiHeader.biPlanes := 1;
bi.bmiHeader.biBitCount := 32;
bi.bmiHeader.biCompression := BI_RGB;
bi.bmiColors[0].rgbBlue := 255;
bi.bmiColors[0].rgbGreen := 255;
bi.bmiColors[0].rgbRed := 255;
bi.bmiColors[0].rgbReserved := 255;
ZeroMemory(@a,sizeof(a));
a[100][100] := $00FFFFFF;
InvalidateRect(Form1.Handle,nil,true);
StretchDiBits(Form1.Canvas.Handle,0,0,200,200,0,0,200,200,
@a,bi,DIB_RGB_COLORS,SRCCOPY);
ValidateRect(Form1.Handle,nil);
end;
Nie wiem tylko jak zrobić dostęp do tj tablicy ( 'a' ) tak jak do TBitmap poprzez ScanLine, próbowałm już na kilka sposobów, ale żaden nie działał, np tak :
type
tlongwordarray = array [0..65535] of longword;
plongwordarray = ^tlongwordarray;
var
p: plongwordarray;
a: array [0..200] of array [0..200] of LongWord;
begin
p := @a[100];
p^[100] := $00FFFFFF;
end;
Proszę o pomoc, jak to zrobić, aby to działało tak jak ScanLine ??