我的意图是 将image1图像的奇数行的偶数点 复制到image2看看这段代码,为什么不行?
提议 可先屏蔽“if i mod 2=1 then”和“if j mod 2=0 then”
procedure TForm1.Button1Click(Sender: TObject);
var
bmp:Tbitmap;
pArray:PByteArray;
i,j,RGBvalue:integer;
Rvalue,Gvalue,Bvalue:Byte;
begin
bmp:=Tbitmap.Create;
bmp.Width:=image1.Width;
bmp.Height:=image1.Height;
for i:=0 to image1.Height-1 do
if i mod 2=1 then
begin
pArray:=image1.Picture.Bitmap.ScanLine[i];
for j:=0 to image1.Width-1 do
if j mod 2=0 then
begin
RGBvalue:=pArray[j];
Rvalue:=GetRvalue(RGBvalue);
Gvalue:=GetGvalue(RGBvalue);
Bvalue:=GetBvalue(RGBvalue);
bmp.Canvas.Pixels[j,i]:=RGB(Rvalue,Gvalue,Bvalue);
end;
end; image2.Picture.Bitmap.Assign(bmp);
end;
提议 可先屏蔽“if i mod 2=1 then”和“if j mod 2=0 then”
procedure TForm1.Button1Click(Sender: TObject);
var
bmp:Tbitmap;
pArray:PByteArray;
i,j,RGBvalue:integer;
Rvalue,Gvalue,Bvalue:Byte;
begin
bmp:=Tbitmap.Create;
bmp.Width:=image1.Width;
bmp.Height:=image1.Height;
for i:=0 to image1.Height-1 do
if i mod 2=1 then
begin
pArray:=image1.Picture.Bitmap.ScanLine[i];
for j:=0 to image1.Width-1 do
if j mod 2=0 then
begin
RGBvalue:=pArray[j];
Rvalue:=GetRvalue(RGBvalue);
Gvalue:=GetGvalue(RGBvalue);
Bvalue:=GetBvalue(RGBvalue);
bmp.Canvas.Pixels[j,i]:=RGB(Rvalue,Gvalue,Bvalue);
end;
end; image2.Picture.Bitmap.Assign(bmp);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
bmp:Tbitmap;
i,j:integer;
begin
bmp:=Tbitmap.Create;
bmp.Width:=image1.Width;
bmp.Height:=image1.Height;
for i:=0 to image1.Height-1 do
if i mod 2=1 then begin
for j:=0 to image1.Width-1 do
if j mod 2=0 then
bmp.Canvas.Pixels[j,i]:=Image1.Canvas.Pixels[j,i];
end;
image2.Picture.Bitmap.Assign(bmp);
end;