求教:大家帮我看一下这段代码,谢谢(300分)

  • 主题发起人 主题发起人 WoDing
  • 开始时间 开始时间
W

WoDing

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var I, X, Y: Integer;
Stream: TMemoryStream;
C2: Array[0..1] of Char;
Points: Array[0..127, 0..15] of Byte;
M: Byte;
begin
Stream := TMemoryStream.Create;
try
Stream.LoadFromFile('c:/graph.txt');
Stream.Seek(0, 0);
for I := 0 to 2047 do
begin
Stream.Read(C2, 2);
Points[I div 16, I mod 16] := StrToInt('$' + C2);
end; // while
finally
Stream.Free;
end;
for Y := 0 to 127 do // Iterate
begin
for X := 0 to 15 do // Iterate
begin
for I := 0 to 7 do // Iterate
begin
M := $80 shr I;
if Points[Y, X] and M = M then
Canvas.Pixels[X * 8 + I, Y] := clBlack;
end; // for
end; // for
end; // for
end; // for
end;
下面这段不明白:请FW指教
if Points[Y, X] and M = M then
Canvas.Pixels[X * 8 + I, Y] := clBlack;
 
这个是进行位测试,M的值先把$80(二进制的10000000)进行了右移位,
如果i=1 ,M=01000000,I=2,M=00100000,依次类推
Points[Y, X] and M = M 对比移位以后的该像素点的值,如果是1,则设置为clBlack;。
 
点在指定的地方就设置该点的颜色
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
596
import
I
I
回复
0
查看
706
import
I
I
回复
0
查看
893
import
I
后退
顶部