Hallo
Gleich zur Frage: Welche Möglichkeiten gibt es die Daten aus einem Array[1..n,1..m] of record ... der unteranderem auch einen Farbwert enthält an ein Bitmap oder ähnliches zu übergeben, wobei die Array-Koordinaten gleich den Pixel-Koordinaten.
Momentan mach ich des so, wobei das ganze kontinuierlich durch ne Timerkomponente aufgerufen wird:
Code:
TCanvasPlaneCoord = record
Color : TColor;
Dist : Extended;
Used : Boolean
end;
var
CanvasPlane : array of array of TCanvasPlaneCoord = NIL;
procedure TFormDrawingBoard.CanvasPlaneToImage(DestinationImage: TImage);
var
i,j : Integer;
MyBmp : TBitmap;
begin
MyBmp := TBitmap.Create;
MyBmp.Height := High(CanvasPlane[0]);
MyBmp.Width := High(CanvasPlane);
DestinationImage.Width := MyBmp.Width;
DestinationImage.Height := MyBmp.Height;
DestinationImage.Picture.Bitmap.Width := MyBmp.Width;
DestinationImage.Picture.Bitmap.Height := MyBmp.Height;
DestinationImage.Picture.Graphic.Width := MyBmp.Width;
DestinationImage.Picture.Graphic.Height := MyBmp.Height;
for i := Low(CanvasPlane) to High(CanvasPlane) do
begin
for j := Low(CanvasPlane[i]) to High(CanvasPlane[i]) do
begin
MyBmp.Canvas.Pixels[i,j] := CanvasPlane[i,j].Color;
end;
end;
DestinationImage.Canvas.Draw(0,0,MyBmp);
MyBmp.Free;
end;
Gibts hierfür noch ne Verbesserungsmöglichkeit, heißt etwas dass den Prozessor bei größeren Dimensionen nicht gleich an seine Belastungsgrenze bringt?
Danke schonmal im Vorraus.
Mfg ..