这个是把图片里的每个像索点取出来,
可为什么我读出的递增值和生成的每个像索点的数量不一致?
X值为:2010372549
而输出memo1的颜色行数才有44369行?晕了。。
procedure TMainForm.Button1Click(Sender: TObject);
var
    i,j,x:Integer;
begin
    with Image1.Picture.Bitmap.Canvas.ClipRect do
    begin
        for i:= left to Right do
            for j:= top To Bottom do
            begin
                Memo1.Lines.Add(ColorToString(Image1.Picture.Bitmap.Canvas.Pixels[i,j]));
                Inc(x);
                Application.ProcessMessages;
            end;           
    
    end;
    ShowMessage(IntToStr(x));
    Image1.Refresh;
    
end;

解决方案 »

  1.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      i,j,x:Integer;
    begin
      with Image1.Picture.Bitmap.Canvas do
      begin
        for i:= 0 to Width - 1 do
          for j:= 0 To Height - 1 do
          begin
            Memo1.Lines.Add(ColorToString(Image1.Picture.Bitmap.Canvas.Pixels[i,j]));
            Inc(x);
            Application.ProcessMessages;
          end;
      end;
      ShowMessage(IntToStr(x));
      Image1.Refresh;
    end;
      

  2.   

    更正下:procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      i,j,x,W,H:Integer;
      c: TColor;
    begin
      W := Image1.Picture.Width;
      H := Image1.Picture.Height;
      //with  do
      x := 0;
      begin
        for i := 0 to W - 1 do
          for j := 0 to H - 1 do
          begin
            c := Image1.Picture.Bitmap.Canvas.Pixels[i,j];
            Memo1.Lines.Add(ColorToString(c));
            Inc(x);
            Application.ProcessMessages;
          end;
      end;
      ShowMessage(IntToStr(x));
      //Image1.Refresh;
    end;