aardio - 【库】print 打印操作库

文章介绍了Godking.printer库的使用,该库提供了一套用于方便绘图和文本打印的API,支持毫米级别的精确度。用户可以进行自定义绘图,包括直线、矩形、椭圆等图形,并且能进行文字排版。此外,还展示了如何通过ownerDraw函数进行更复杂的自定义绘图操作,包括利用gdip接口直接在打印机DC上绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

封装一些常用的绘图、文本功能,可以方便的进行打印。

绘制单位为毫米,精确度为0.01毫米。

库文件下载:

http://chengxu.online   →  aardio资源下载  →  print.rar

打印效果:

 示例代码:

import console; 
import godking.print

var p = godking.print();
// 开始打印
p.start("这是光庆的打印文档演示")

//打印第1页
p.startPage()
p.drawText( 0,0,"这是第 1 页" )
p.setPen(0x000000,1/*_PS_DASH*/,0.1);
p.drawLine(0,10,200,10);
p.fillRect(20,30,30,50);
p.fillRect(10,35,40,45);
p.drawRect(120,30,130,50);
p.drawRect(110,35,140,45);
p.fillEllipse(100,100,150,120)
p.drawEllipse(100,120,150,140)
p.endPage()

//打印第2页
p.startPage()
p.drawText( 0,0,"这是第 2 页" )
p.setPen(0x000000,4/*_PS_DASHDOTDOT*/,0.5);
p.drawLine(0,10,200,10);
p.fillRoundRect(20,30,30,50,5)
p.drawRoundRect(30,30,40,40,5)
p.drawRoundRect(30,40,40,50,5)
p.setFont("黑体",10)
p.drawText(50,30,100,50,"这里是可以自动换行的字符串,对齐方式和换行设置可以通过参数设置,详细用法参考_DT_开头的常量解释。",0x10/*_DT_WORDBREAK*/)
p.endPage()

//结束打印
p.end()
//释放资源
p.close()
console.pause(true);

自定义打印函数效果:

自定义打印函数示例代码:

import console; 
import godking.print
var p = godking.print("")
p.start( "打印文档" )

p.drawText( 0,0,"这是一行文本,执行ownerDraw函数将覆盖本文本。" )

p.ownerDraw(function(w,h,wmm,hmm){
	/* 自定义绘图函数,可使用gdip绘图。绘制完成后须返回bitmap句柄。执行本函数将覆盖已存在内容。
	   参数:w:宽度(像素)、h:高度(像素)、wmm:宽度(毫米)、hmm高度(毫米) */
	import godking.paint;
	var paint = godking.paint(w,h,0xFFFFFFFF);
	paint.scale(w/wmm,h/hmm,0);
	paint.fillRect(30,30,50,50);
	paint.drawText(0,100,wmm-5,120,"这里是使用gdip绘制图片,绘制完毕后,库内部自动使用p.drawBitmap函数将返回的位图句柄绘制到打印机上。",::LOGFONT(name="宋体";h=6;color=0xFF000000;brush=null),0,0,0);
	return paint.bitmap.copyHandle();
})

p.ownerDrawDc(function(hdc,scaleX,scaleY){
	/* 自定义绘图函数,直接在打印机DC上绘图。执行本函数不会覆盖已存在内容。paint绘制完毕后必须close()。
	   参数:hdc:打印机DC、scaleX:横向缩放比例、scaleY:纵向缩放比例 */
	import godking.paint;
	var paint = godking.paint.fromHdc(hdc);
	paint.scale(scaleX,scaleY,0);
	paint.fillRect(60,30,80,50);
	paint.drawText(0,120,200,140,"这里是使用gdip直接绘制打印机DC,以前的内容不会被覆盖。如果文本过长,会自动换行处理。",::LOGFONT(name="黑体";h=6;color=0xFF000000;brush=null),0,0,0);
	paint.close();
})

p.end()
console.pause(true);

获取打印预览图片示例代码:

import console; 
import godking.print
var p = godking.print();

// 开始打印,启用预览预览
p.start( "" ,true/*是否启用打印预览*/ )

//打印第1页
p.startPage();
p.setFont("宋体",12,0x000000/*0x000000*/);
p.setBrush(0x000000);
p.setPen(0x000000,1/*_PS_DASH*/,1);
p.drawText(0,0,"这是第 1 页" )
p.drawLine(0,10,200,10);
p.fillRect(20,30,30,50);
p.fillRect(10,35,40,45);
p.drawRect(120,30,130,50);
p.drawRect(110,35,140,45);
p.fillEllipse(100,100,150,120);
p.drawEllipse(100,120,150,150);
p.drawTextCenter(100,120,150,150,"这是第 1 页" );
p.endPage();

//打印第2页
p.startPage();
p.setFont("黑体",20,0x000000/*0x000000*/);
p.setBrush(0x000000);
p.setPen(0x000000,1/*_PS_DASH*/,1);
p.drawTextCenter(0,0,p.PaperWidth,10,"这是第 2 页" )
p.drawLine(0,10,200,10);
p.fillRect(20,30,30,50);
p.fillRect(10,35,40,45);
p.drawRect(120,30,130,50);
p.drawRect(110,35,140,45);
p.fillEllipse(100,100,150,120);
p.drawEllipse(100,120,150,150);
p.drawTextCenter(100,120,150,150,"这是第 2 页" );
p.endPage();

//结束打印
p.end(/*取消打印*/);

//获取预览图片
for(i=1;#p.printViewPages;1){
	..string.save("C:\Users\Administrator\Desktop\a"+i+".png",p.printViewPages[i]);
}

//释放资源
p.close();
console.pause(true);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值