【发布时间】:2013-04-25 14:39:42
【问题描述】:
我有一个 TColor 的二维数组。而且我还有一个 TCanvas。我怎样才能比使用 for 循环更快地在画布上绘制此颜色图?
例如:
type
T2DAr = array of array of TColor;
var
ar: T2DAr;
Form1: TForm; // mainform
function main;
var x, y: integer;
begin
{filling array with colors as a 10x10}
for x := 0 to length(ar)-1 do
for y := 0 to length(ar[x])-1 do
Form1.Canvas.Pixels[x, y] := ar[x, y];
end;
这种方式运行速度太慢。我需要一个更快的算法。
【问题讨论】:
-
这个已经回答了很多次了。答案是:使用
scanlines。 -
将 TColor 的二维数组视为光栅图像。因此,将您的颜色矩阵放入位图中,然后将其粘贴到 TCanvas 上。 @Andreas Rejbrand,TCanvas 足够抽象,没有扫描线。
-
我看到了标题,我立即进来说
scanline,但看到它已经被提及了 -
一点:更正:你的数组必须是矩形的
-
或使用 Graphics32.org
标签: delphi canvas graphics matrix drawing