如图,我有一段代码
function MyScout(Bitmap: TBitmap;Dataset :Tdataset):Boolean;
var  X, Y: integer;
  O: pByteArray;
  newbmp: TBitmap;
begin
  newbmp := TBitmap.Create;
  newbmp.PixelFormat := bitmap.PixelFormat;
  newbmp.Assign(bitmap);
  for Y := 0 to newbmp.Height - 1 do
  begin
    O := bitmap.ScanLine[Y];
    for X := 0 to newbmp.Width - 1 do   
    begin
      if o[x]=255 then  //白色点
      begin
        //处理代码
      end;
    end;
  end;
end;好像这个newbmp.width 不是o数组的下标上限
而且我在画图程序里大概确定第一个白点的位置是(16,12),通过上面的代码查找变成了(51,12)我是delphi新手,处理bmp图片也是昨天才试试的

解决方案 »

  1.   

    晕了,刚才好像忽然明白了,是不是一象素是24bit呢
      

  2.   

    我记得有个函数叫做PixPos(X,Y)
    获取Pos上的Pix信息,但是不记得是不是BitMap类的了,可能是Canvas类
      

  3.   

    if o[x]=255 then  //白色点
          begin
            //处理代码
          end;
    判断白点不是这样的
    把255改成clWhite
      

  4.   

    看你的图像是什么格式的,24bit? 8bit? 如果是8bit,图像的颜色是基于调色板的,也不会是255。
      

  5.   

    BMP格式的数据是逆序存储的,即在内存中最下面一行的数组在图像数据的最开始,所以你看下是不是有这个关系  newbmp.Width-51=16还有从 for X := 0 to newbmp.Width - 1 do   这句似乎可以看出你的图像是8位色的。
      

  6.   

    、、还有从 for X := 0 to newbmp.Width - 1 do   这句似乎可以看出你的图像是8位色的。
    这个我说错了!