我想把Image1的点原封不动的画到Image2
请教怎么办,这一步都画不了的话,那我下一步都不知怎么做了,请帮帮忙var
i,j :Integer;
b : TbitMap;
begin
b := TBitMap.Create;
image2.Picture.Assign(b);  for i:=0 to Image1.Picture.Height do
    for j:=0 to Image1.Picture.Width do
     b.Canvas.Pixels[i,j]:=Image1.Canvas.Pixels[i,j];
end;

解决方案 »

  1.   

    var
      i,j :Integer;
      b : TbitMap;
    begin
      b := TBitMap.Create;
      b.Height:=Image1.picture.Height;
      b.Width:=Image1.Picture.Width;
      for i:=0 to Image1.Picture.Height do
        for j:=0 to Image1.Picture.Width do
         b.Canvas.Pixels[i,j]:=Image1.Canvas.Pixels[i,j];
      Image2.Picture.Bitmap.Assign(b);
      b.free;
    end;
    代码更改成这样就可以了。但是有一个前提,就是Image1中必须载入的是一个Bmp图片,否则就不能显示(显示为空)。
    如果Image1中载入的是一个JPG图片的话,就比较麻烦了。
    需要在Image1载入图片后加上
    (image1.Picture.Graphic as TJPEGImage).DibNeeded;
    然后 b.Canvas.Pixels[i,j]:=Image1.Picture.Bitmap.Canvas.Pixels[i,j];
    我在Delphi5下面是这么做的,但是在Delphi7下面好像也不行。
      

  2.   

    动态创建TBitmap对象,然后Image2.Picture.Assign(TBitmap对象);
      

  3.   

    是呀,最好不要用Pixel,慢得很var
    b : TBitMap;
    begin
    b := TBitMap.Create;
    b.Assign(Image1.Picture.Bitmap);
    b.Free;
    b:=nil;