说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

100分紧急求救~有关CB打印问题

编辑:说三道四文库 发布时间:2017-12-17 08:17
HTML文档下载 WORD文档下载 PDF文档下载
我现在想在打印纸的特定位置打印一条直线(如起点坐标(200cm,200cm)终点坐标(400cm,400cm)),我设想现在Form上的Image画

imgMain->Canvas->MoveTo(100,100);
imgMain->Canvas->LineTo(200,200);
然后在通过象素和打印机的映射关系处理,然后在调用form->Print().

先前提问过,网友说使用SetMapMode,但是好像不太会用,是不是SetMapMode(GetDC(form->Handle),参数)还是不因该调用form的打印函数,需要另行书写打印函数?望各位高手指点用法。还有人说是GetDeviceCaps函数,不知应该使用拿一个?还是我的思路错误?望大侠指点!
关注!关注.
不好意思,我好像最多只能给40分
屏幕呢打印的像素对应关系为:PrintPhotoSizeX,PrintPhotoSizeY
ScreenPixelsPerInchX=GetDeviceCaps(Screen->Canvas->handle, HorzRes)/GetDeviceCaps(Screen->Canvas->handle, HORZSIZE);
ScreenPixelsPerInchY=GetDeviceCaps(Screen->Canvas->handle, VERTRes)/GetDeviceCaps(Screen->Canvas->handle, VERTSIZE);

    PrinterPixelsPerInchX=GetDeviceCaps(Printer->handle, HorzRes)/GetDeviceCaps(Printer->handle, HORZSIZE);
    PrinterPixelsPerInchY=GetDeviceCaps(Printer->handle, VERTRes)/GetDeviceCaps(Printer->handle, VERTSIZE);

            PrintPhotoSizeX=OneInchSizeWidth/ScreenPixelsPerInchX * PrinterPixelsPerInchX;
            PrintPhotoSizeY=OneInchSizeHeight/ScreenPixelsPerInchY * PrinterPixelsPerInchY;

打印可以这样:
TPrinter *Prntr = Printer();
Prntr->BeginDoc();
Prntr->Canvas->MoveTo(100,100);
Prntr->Canvas->LineTo(200,200);
Prntr->EndDoc();
先设置打印机Canvas的坐标映射方式:
  SetMapMode (Printer()->Canvas->Handle, MM_LOMETRIC );
这句把Canvas的坐标映射设为 每逻辑单位就是0.1毫米。
然后
  Printer()->Canvas->MoveTo (100,100);
  Printer()->Canvas->LineTo (200,200);
这就从 (10cm,10cm) 开始划一条直线到 (20cm,20cm)
注意打印机有一个不可打印区域,而Printer()->Canvas是不包括这个区域的
就按照项羽兄的代码就可以了,这个代码在很多地方都用过哦。
感谢各位网友,特别是过江项羽和未死的马同志,有没有在西安的?
再请问过江项羽兄,实际上我想解决的问题是打印出来在特定的位置(当然是以厘米为单位)具有特定的直线、文字、图片,以构成整个打印结果。我开始设想的是通过对当时设备映射情况的获取,计算出相应打印机位置对应的FORM中的像素位置,并在FORM中的位置画直线、用LABEL书写文字(因为还存在用户可以对文字的位置进行托拽调整),然后再调用FORM->PRINT()打印整个FORM,不知道这样的方法是否可行?像素的位置是否是通过以下计算公式得到:
  iScreenPixelX = GetDeviceCaps(Screen->ActiveForm->Canvas->Handle, HORZRES);  //屏幕横轴得像素数
  iPrinterInchX = GetDeviceCaps(Printer()->Handle, HORZSIZE);
  //打印机横轴的英寸数
  iScreenPixelY = GetDeviceCaps(Screen->ActiveForm->Canvas->Handle, VERTRES);
  iPrinterInchY = GetDeviceCaps(Printer()->Handle, VERTSIZE);

  打印机在位置(iPrinterPostionX,iPrinterPostionY)上的点对应FORM的坐标:

  iFormPixelX = iPrinterPositionX * iScreenPixelX /iPrinterInchX; 
  iFormPixelY = iPrinterPositionY * iScreenPixelY /iPrinterInchY; 

  另外,GetDeviceCaps(Printer()->Handle,)和GetDeviceCaps(Printer()->Canvas->Handle,)究竟有什么区别?

  谢谢赐教!能不能把您的QQ号码告诉我,或者你先加我10205081,谢谢!
sorry 一直没看到。
像素的位置 PrintPhotoSizeX,PrintPhotoSizeY
OneInchSizeWidth,OneInchSizeHeight 实际需要的尺寸,单位毫米

HDC hDc=Printer()->Canvas->Handel;
int picPerMMX=GetDeviceCaps(hDc,HORZRES)/GetDeviceCaps(hDc,HORZSIZE);
int picPerMMY=GetDeviceCaps(hDc,VERTRES)/GetDeviceCaps(hDc,VERTSIZE);  
PrintPhotoSizeX=OneInchSizeWidth * picPerMMX;
PrintPhotoSizeY=OneInchSizeHeight* picPerMMY;

Printer()->Handle:打印机句柄,可控制打印机
Printer()->Canvas->Handle可用来控制Cavas


谢谢过江项羽兄!!
2012 MDCC“2012移动互联网应用创新大赛与开发者面对面”专场:创所未享,携手逐梦! RIM携QNX为“2012 BlackBerry平台移动应用高校竞赛” 颁奖 BlackBerry 10 策略:用金钱吸引游戏开发者 黑莓10要来了:RIM正式开放应用提交 从RIM与微软达成exFAT授权所想到的 OpenStack中国行来到南京 中兴通讯分享电信行业应用 CSS架构目标:预测、重用、扩展、维护 黑客利用移动浏览器漏洞窃取云计算资源 地位动摇:Windows设备10月销量同比下滑21% 手机QQ浏览器4.0 Android版 极速快感 生存还是毁灭:Facebook惨败真是HTML5的错? OpenStack基金会主席:一年后成熟度超越CloudStack 在线学习新编程 技巧全攻略 “英特尔杯”HTML5程序开发邀请赛侧记 C#编译器组首席工程师Eric Lippert离职 加盟Coverity Testacular:Google开源的JavaScript测试执行过程管理工具 黑莓亚洲开发者大会报道:BB10将敲开亚洲应用市场大门 挑战Google!传Facebook与Yahoo要联手开发搜索引擎 揭秘Android 4.2 开发者的天堂与地狱 11大黄金法则:顶级移动UX设计心髓 库克时代:苹果已经不是苹果 设计师必备:极简风格的Fluid UI快速原型图工具 iPhone 5发布,后乔布斯时代苹果乏善可陈 牛人妙计:HTML5应用也能像原生一样跑得快 移动周报:OpenFeint难逃关闭命运 细数与苹果恩怨史 FlyingDaggers团队专访:不浮躁,用心做真正的原创游戏! IT巨头混战:谷歌、苹果、Facebook以及亚马逊的四国演义 乐视TV:智能电视平台——Android 开发者的新空间 TIOBE 2012年12月编程语言排行榜:Objective-C冲刺卫冕年度语言 11月份浏览器市场份额 IE10已占据0.51% 亚洲高科技公司正在分享惠普、戴尔和IBM的云“午餐” 一个小问题,还请多帮忙!谢谢!! 怎么用命令看到一个进程的内存数? 用VC怎样获知当前Window是否支持某国语言(如中文)? 投诉: 有关通用查询组件—— 视图选择公式的问题,请帮帮我! 请教一小问题? DataSet.AcceptChanges()这个有什么用呀??? 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 ?怎样在ASPX的WEB服务中运用C#的线程 在2003下用Interdev 串口通信的问题 紧急50分 在 vb.net 中,如何读取 xml 文件? 斑竹地进来! 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 新装的WIN2000,关了启动程序,占内存近100M,还老出怪问题 连编以后,出现的错误,求解 我有一个外来控件(条形码),请问该如何用代码在图片框中动态添加一控件?? 系统设计师就要开考了,请考过高程和就要考高程全部看过来~~~~ 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 如何把一组CLASS文件打成一个JAR的包 谁用过solid数据库阿,可知里面怎莫用视图阿??紧急! 求求大哥们了 怎样动态改变控件的属性? 明天要去九城面试,有知道内情的吗,给说说,无限感激,, 大家帮忙看看!我有记个问题一直困扰我!(送分的问题(可以加100分啊),不够可加啊!都是送分题,来者都有分) 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 如何处理让播放器播放多首歌 【请教】vc适合oo开发? Window中的大/小字体显示属性改变后,影响对话框大小的问题(VC)? 如何处理让播放器播放多首歌 如何同时使用两个msn 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 在线等待大虾求助:win2000缠人问题 求ASP下进度条源码!多谢了! ———请帮忙----! 如何用sql语句将文本文件转换成sql数据库 用什么开发工具最好 急急急!急急急!accept 后如何获取Client端socket的源IP地址字符串???? 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 Jbuilder9加载了db2驱动却不能使用 高分请教!!!关于访问数据库的用的DataSet对象的 请问如何传递一个VarChar类型的参数给存储过程? 来Networkers, 感受最强劲的网络力量 关于打印图片的问题,高分~~ 电脑是windows2000和rh linux8双系统,开机时可以选择win还是linux,不选的话默认进linux,现在我想默入win2000,不知如何做? 扩展名为.MSI的是什么文件,怎么用? 明天要去九城面试,有知道内情的吗,给说说,无限感激,, 求中程和高程的书 提问—— 英语翻译 automobile exhaust是什么意思 鸭子的哲学,兔子的教训,苍蝇的反问,大象的猜测,他们各自揭露了什么样的现象?鸭子的哲学:要想有人缘,对什么事都一律呱呱叫好兔子的教训;光有三窟还不行,还要有出国护照苍蝇的反问: 德国vde认证是什么意思 两袋化肥 甲袋取3/1乙袋取4/ 3,这时,甲袋是乙袋的两倍.甲袋有60kg 乙有多少袋 厑卐锕莪什么意思 英文小说<<the witches>>的简介,长一点,急!快点! Video arcade is a good place -----?填什么?填空//A.have fun B.had funC.has fun D.to have fun 英文小说《The Witches》讲了一个怎样的故事,给我一个故事摘要.如果有中文译文的链接就更好了.一楼朋友回答的简单清楚,可否再详细些, ZKSnyder的The witches of Worm没死? sending you get well wishes to brighten your day,and let you know you are on my mind!这句话是什么意 英汇丰银行报告:中国成为2013年度以色列军队炮击加沙打死一名巴勒斯坦人壮美!摄影师抓拍冰冻海浪翻滚瞬间【高英汇丰银行报告:中国成为2013年度港媒:中国小偷泰国免税店内行窃后坐飞娜塔莉·波特曼:参演《雷神》,主要是奥巴马豪华座驾“野兽”细节曝光美国务卿将访欧洲中东八国 重申与沙特美空管局解除禁令 飞行全程可使用电子美国空军证实一架“捕食者”无人机坠毁美国务卿将访欧洲中东八国 重申与沙特逐步加大政府 向社会力量购买服务力度美国空军参谋长一行 参观访问解放军驻他是经济学界拨乱反正倡导者中国把引进国外智力 作为一项长期战略广州 国庆长假去看恐龙进4球并非不可能谁帅?张帅!加强价格监管 优化消费环境关天朗月底战伍兹深圳西站3趟列车隔日开行销毁叙化武总体方案公布穿越生存手册我是警察说了算明星情人足坛教父网游之召唤天下天生郭奉孝妹妹恋人成仙流浪记玄兵传说外科大夫宦海逐流老虎嘴瀑布旅游九龙湖旅游文湖公园旅游锡林广场旅游锡林河旅游相山公园旅游越王台旅游遇龙河漂流兴隆码头旅游武汉国民政府旧址旅游白马仙洞旅游莎萝坪旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘