上面是要打印的图片。问题:
1,怎样只打印栅格,波形,数字,而不打印背景(即黑色部分)。
2,让打印出来的栅格,波形,数字是黑色的。

解决方案 »

  1.   

    用GDI+的ColorMatrix来做反色处理
      

  2.   


    我用uses printers;怎么取反?
    下面是打印整张图片的代码:procedure PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
    var
       BitmapHeader: pBitmapInfo;
       BitmapImage: POINTER;
       HeaderSize: DWORD;
       ImageSize: DWORD;
    begin
       GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
       //读取位图文件的头信息,
       GetMem(BitmapHeader, HeaderSize);
       //分配合适的内存
       GetMem(BitmapImage, ImageSize);
       try
          GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
          StretchDIBits(Canvas.Handle,
             DestRect.Left, DestRect.Top,
             // 目标初始坐标
             DestRect.Right - DestRect.Left,
             // 目标宽度
             DestRect.Bottom - DestRect.Top,
             // 目标高度
             0, 0, // 源初始坐标
             Bitmap.Width, Bitmap.Height,
             // 源高度和宽度
             BitmapImage,
             TBitmapInfo(BitmapHeader^),
             DIB_RGB_COLORS,
             SRCCOPY)
             //位图按照要求进行拉伸
       finally
          FreeMem(BitmapHeader);
          //内存释放
          FreeMem(BitmapImage);
       end;
    end; {PrintBitmap}
      

  3.   


    StretchDIBits时,画到临时图上,然后再对临时图片取反操作。最后再将临时图打印
      

  4.   

    再说一句,直接事先处理
    proceduer PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
    这个bitmap
      

  5.   


    用GDI+也可以替换颜色的,即先替换白色成A色,转了背景后再转...
      

  6.   

    建议楼主去学学GDI+,费点时间,终生受益。
      

  7.   


    可行,也可以用其他图片工具做反色处理,如photoshop
      

  8.   


    对整幅图进行扫描,进行二值化处理,黑(大于某个rgb值)的变白,其他颜色的变黑,应该就可以了