var
pt:TPoint;
i,k:integer;
begin
for i := 0 to image1.Width - 1 do
for k := 0 to image1.Height - 1 do
begin
pt.X := i; pt.Y := i;
pt := image1.ClientToScreen(pt);
result := GetPixel(GetDC(0), pt.x, pt.Y); //得到屏幕上某点的颜色
end;循环取屏幕上某点的颜色值,如果图片较小的话,就没问题。
稍大一点的图片,到后面得到的颜色值都变成黑色了?
这是什么原因呢,怎么解决?
pt:TPoint;
i,k:integer;
begin
for i := 0 to image1.Width - 1 do
for k := 0 to image1.Height - 1 do
begin
pt.X := i; pt.Y := i;
pt := image1.ClientToScreen(pt);
result := GetPixel(GetDC(0), pt.x, pt.Y); //得到屏幕上某点的颜色
end;循环取屏幕上某点的颜色值,如果图片较小的话,就没问题。
稍大一点的图片,到后面得到的颜色值都变成黑色了?
这是什么原因呢,怎么解决?
这个我知道,我只是写个例子var
pt:TPoint;
i,k:integer;
cl:TColor;
begin
for i := 0 to image1.Width - 1 do
for k := 0 to image1.Height - 1 do
begin
pt.X := i; pt.Y := i;
pt := image1.ClientToScreen(pt);
cl := GetPixel(GetDC(0), pt.x, pt.Y); //得到屏幕上某点的颜色
//在这里我根据cl给另一个canvas对应点赋颜色值,但发现图片较大时,到后来取到的
//cl都是$FFFFFFF,也就是黑色
end;
var
pt:TPoint;
i,k:integer;
cl:TColor;
DC:HDC;
begin
for i := 0 to image1.Width - 1 do
for k := 0 to image1.Height - 1 do
begin
pt.X := i; pt.Y := i;
pt := image1.ClientToScreen(pt);
DC := GetDC(0);
try
cl := GetPixel(DC, pt.x, pt.Y); //得到屏幕上某点的颜色
//在这里我根据cl给另一个canvas对应点赋颜色值
finally
ReleaseDC(0,Dc); // 要在这里释放
end;
end;
//这样就OK了