需要 printomatic
xtra 支持。
虽然用printfrom 可以直接打印屏幕,可惜有些hp老机器打印出来空白页面。
打印屏幕的时候 因为屏幕图片的 位数跟屏幕分辨率有关系。
所以当屏幕分辨率不是8bit的时候,一些hp机器就印出空页了,这个是hp机器的毛病了。 健壮的程序如何解决这个问题呢??
用下面的代码可以解决
set doc = new (xtra "PrintOMatic") --建立 printomatic xtra 实体
if not objectP(doc) then
Alert "There is no currently selected printer. Printing features are disabled."
else
cursor 4
printMember = new(#bitmap) --新建一个图片成员
member(printMember).image=image(296,454,8) --设置新图片尺寸和位数 这里要抓的图片是 296,454 的图片大小
member(printMember).image.copypixels((the stage).image,rect(0,0,296,454),rect((640-296)/2,(480-454)/2,(640+296)/2,(480+454)/2)) -- 拷贝舞台到这个新成员。
setDocumentName doc, "QTest Score Print!"
newPage doc
append doc,member(printMember) --把这个图片加到 前面建立的 的 doc 实体
cursor -1
print doc - 打印
erase member(printMember)--清除 printmember
set doc = 0
end if
end
Director 中,让印出来的图居在纸张的正中间的实现方法
在上面的基础上
setDocumentName doc, "QTest Score Print!"
之后加上
PaperW=getPaperWidth(doc)
PaperH=getPaperHeight(doc)
setMargins doc, Rect((PaperW-296)/2,(PaperH-454)/2,0,0)