读书人

怎样不打印背景解决方法

发布时间: 2012-02-24 16:30:39 作者: rapoo

怎样不打印背景

上面是要打印的图片。

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

[解决办法]
直接修改图片背景,然后再拷贝图片到打印机的画布上
[解决办法]
用GDI+的ColorMatrix来做反色处理
[解决办法]

StretchDIBits时,画到临时图上,然后再对临时图片取反操作。最后再将临时图打印
[解决办法]

探讨
我的波形是用黄色画,数字蓝色,栅格是白色,这样取反后就不是我要的黑色了~~

[解决办法]
探讨
引用:
不打印背景,是不打印黑色吧,那直接取反就可以了,


我用uses printers;怎么取反?
下面是打印整张图片的代码:
Delphi(Pascal) codeprocedure 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}

读书人网 >.NET

热点推荐