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

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

编辑:说三道四文库 发布时间:2017-02-23 09:02
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


谢谢过江项羽兄!!
VB如果自定义 MsgBox 的按钮,标题等 VB如何创建数据绑定控件。 VB如何解决VB中的Grid控件的打印问题 VB如何强制文件对话框再次读取正确的磁盘? VB如何取得RichTextBox控件中光标所在行的值? VB如何设定 MsgBox 在若干时间之后若无回应則自动关闭? VB如何使用VB控件Commom Dialog VB如何用VB6写COM组件(二) VB如何用VB6写COM组件(一) VB如何在VB中使用Delphi的控件 VB如何在运行时动态增加控件 显示和隐藏鼠标-VB资料 VB用ActiveX Control Pad VB用API函数改进ListView 控件的显示效果 用VB6.0中文版进行DHTML程序开发 用VB编写标准CGI程序 用VB编写留言板 用VB播放FLASH动画 用VB开发进程管理软件 VB用WinSock设计Chat程序 运用MSChart,生成统计图形-VB资料 向文本框等等控件的系统右键菜单里追加自己定义的菜单-VB资料 在VB中用定时控件实现长定时操作 在Visual Basic中,在GotFocus事件中快速选定文本 在程序中注册和注销 OCX 控件 -VB资料 在运行时维护DBGRID的栏位宽度-VB资料 VB怎样使用VB开发基于Sybase的C/S软件 VB怎样在运行时动态生成多个相同的控件 直接编辑VB中网格控制项的两种方法 自制控件方面的有关知识-VB资料 Unicode vs Ansi -VB资料 请管理员回答 sql server截取字符串的函数。 关于InstalShield的两个非常简单的问题! 这般问题,应该如何? 如何学好VC? vc在应用层上 和delphi 区别在哪里? 以下程序中,若输入12345,ABC,则输出的结果是什么 请问大师门,我引用数据库为什么不行呀? ----在线程里的SOCKET为什么关不掉 请问如何有破解excel2000文件密码的工具或方法吗?300分酬谢,急等.谢谢! 在SQL*PLUS下怎样查看一个字段的属性,如是否为主关键字。 帮小弟一把,我仅有的36分了,各位 在vc中如何将字符串转化成其对应的ascii码?用什么函数? 天啊!!怎么办啊,救命啊 内存分配的一个小问题 无聊,散分。只给前面十个。 用image控件可以互相转换ico,bmp,jpg三种格式的图片吗? 请问哪有NGWS下载? ?有没有啊 以下程序的输出值是 哪位朋友知晓如果Table与DbGrid绑定后,如何实现非第一索引的排序。 请问MSDN有中文版的吗?我们这的全是英文版的 我的 Win2000 出大问题了,急盼各位大虾赐教 请问那里有VB.NET软件下载呀 什么delphi命令可以打开网页呢? 到底有没有人知道如何可以在panel中动态的调用frame或者是form呢? 哪里有windowsXP下载? 送我能给的最大分,请教很小的问题,中高手进 聊天请进(thinkingdog) 大家来谈谈 IBM都有些什么认证???什么认证现在比较吃香???谢谢!!! 打印数窗问题求助! 如何使用UrlDownloadtoFile下载文件使用进度条? 如何用在两次用getTime()中得到两个不同的时间。 一个类似于牛角尖的问题(多余的CONST),不能忽视,请各位高手详细说明!!谢谢! 怎样读写注册表,每次都不成功,气死我也~! 各位救命啊,用 TClientDataSet.Load XML 的问题。。。。 娃呀呀,pb8怎么这么难安装?jaguar组建就用了5分钟,regester window又用了10分钟,重启动后,还没完,偶不敢装了,把碟退了出来,大家是不是也这样?//牛虻 请教高手一个ado的问题. 请问一个TWebBrowser的问题 请问:系统崩溃后,找不到BOOT,系统告诉:DOS基本分区为格式化?无法引导启动! 在VB.NET的tabcontrol上放置AxMSFlexGrid控件问题,急 java3D 现在大家是用Oracle 8还是 Oracle 9??? C++问题求助! 请教一个错误的原因. 各位大侠请问Jeffrey Richter的windows核心程序设计是不是就是andvanced windows程序设计的第四版 SCJP里的那些什么300-020,020是什么意思啊? 请问一个关于document.write()方法的问题。急啊! 初学者,欢迎灌水。 Delphi6的Bug?不兼容? 为什么我用GetProfileString()却总是得不到结果 班主任黄老师到超市买了2把拖把和5把扫帚,共付66元,已知一把拖把的价钱是3把扫帚的价格,问一把拖把和一把扫帚各多少元 生料带的配方可以加入些什么填充料吗?生料带的配方中可以加入些什么填充料来提高质量吗?有没什么填充料降低成本呀? 气温略高于0°C,有风的时候晒在室外的湿衣服会结冰吗 为什么巫婆要骑扫帚而不是拖把?如题! 内衣泡在干净的水里,容易滋生细菌吗 在寒冷的阴天,气温未达到0摄氏度,但晾在室外的湿衣服会结冰,什么原因?工程热力学 扫帚是拖把的2倍,扫帚每班分5把,少8把,拖把每班2把,多6把,买来扫帚拖把各几把? 内衣泡在水里不洗会不会滋生细菌 正常铁路轨道寿命多少年 巫婆骑的是扫帚还是拖把靠!我只是问问,骑的是什么!怎么把弗洛伊德都搞出来啦! 我住宿舍内衣洗干净就放在床铺上怎样可以减少细菌的滋生 铁路轨道衡是什么作用 连接天燃气管道和水管管道用的生料带是一样的吗 苹果切开后为什么会变黑? HIV在空气中能存活多长时间?请问HIV在空气中到底能存活多长时间?好像听人说也就几个小时,有点疑虑的是,既然离开人体后马上会死亡,那为什么输带有HIV血的血浆时会感染HIV(因为血浆中的血 液体生料带管子上带油有事没 关于铝和另一不活泼的金属电极(电解质NaOH溶液)构成的原电池的方程式另一不活泼的电极随便假设,请写出不同假设下的两极的电极反应方程式(把总反应方程也写出来更好) 艾滋病在空气中能存活多久并且伴随着春天的阳光和春天的温度 切开的苹果放在空气中为什么会变黄? 镁与铝作电极氢氧化钠溶液作电解质的原电池反应,为什么镁会先参加反应呢,在铝上有气泡产生 HIV 暴露在空气中的存活时间是多少? 为什么苹果切开后放置空气中切口处变成棕红色与接触到空气中的水分无关 我添过女人的内裤,我以为头里有细菌,就经常拿手狠狠的打头,现在头痛,请问是真的有细菌吗? 艾滋病病毒在空气中能存活多长时间,听说过因为修眉毛而得上艾滋病的,那么,他得在刀具上存在多长时间才能消失.这种感染艾滋病的机率有多大? 水管 生料带 怎么 铁路轨道结构包括哪几部分?最好有图 熔化吸热 凝固放热日常生活中有那些利用熔化吸热,凝固放热的例子?什么情况下熔化吸热,凝固放热会给我们带来不利影响?怎样避免? 市面上有脱脂生料带、有油生料带、无油生料带,它们有什么区别,都可以用来按装水管吗? 中国的土地很多都被农药污染了,很多指标会不合格,还有部分是转基因.国内外那个品牌大米可以安心吃?国内的那个地区是没有转基因的,也没有化学超标的?国外的大米那个品牌是真品?我很迷 用汽油擦除衣服上的污渍时,汽油很快跑掉了,这是什么物态变化,过程中是吸热还是放热 水管龙头软管安装使用生料带的问题家中的水管龙头淋浴软管那些在安装的时候需要用生料带那些不用?是不是里面带有橡胶垫圈的就不需要生料带了?生料带使用的时候一般需要缠绕多少圈? 冬天,结冰的 湿衣服也能晾乾,其中发生的物态变化是? 请问中国男性的阴茎的长度和直径标准? 测量成品窗帘下垂长度的计算方式? 冬天潮湿的衣服一层结冰的过程中的物态变化是什么? 甲乙两人在铁路轨道旁背向而行,速度都是每秒1米,一列火车匀速地向甲迎面驰来,列车在甲旁开过用了16秒,而在乙身旁开过用18秒,问这列火车多长? 太阳暴晒是不是能杀死所有的细菌?把毛巾什么的放太阳底下暴晒是不是可以杀死所有的细菌、病毒? 如何进行窗帘丈量,如何测量窗帘 原电池中,电解质溶液对电极的影响.为什么在氢氧化钠溶液中,镁当正极,铝当负极呢 疥疮菌在太阳底下能被晒死吗.患者信息:女 17岁 江西 宜春 窗帘测量怎么测量啊? 构成原电池的时两个电极一定至少有一个和电解质反映吗镁和铝在氢氧化钠电解质中谁是负极啊 为什么?小生愚笨 请清楚说明 如果是 那铁和铜在氢氧化钠做电解质的情况下能构成原电池吗? 杀死毛巾、衣服上的细菌、螨虫用太阳晒有效吗?那要晒多久呢? 内裤湿着放会滋生细菌吗 铝与镁形成原电池电解质溶液为氢氧化钠,请把负极的反应式写出来? 购买窗帘时,窗帘的尺寸如何测量? 我添过女人的内裤,我以为头里有细菌,就经常拿手狠狠的打头,现在头痛,请问是真的有细菌吗?..我添过女人的内裤,我以为头里有细菌,就经常拿手狠狠的打头,现在头痛,请问是真的有细菌吗? 铁路轨道加强设备有哪些? 要怎么丈量自己家里应该购买的窗帘长度和宽度? 女性内裤细菌多 它的寿命是多久呢 空气中的细菌与什么有关细菌必须从外结摄取有机物获得营养.下表为不同地区的细菌分布数场所 空气中的细菌数(个/米3)畜舍 100万-200万宿舍 2000城市街道 5000市区公园 200海洋上空 1-2北极 日全食是光的什么产生的现象? 日全食是如何发生的 中国的哪些省都与外国相连?分别与哪些国家相连? 日全食现象是怎样发生的? 为什么家里的苹果切开之后变黑了?不是 就是切开放了一会就变黑了呢 中国为什么要与其他国家(外国)合作? 扫把 拖把 属于什么行业 生料带对封水、气、油的成份有什么要求? 镁—铝—氢氧化钠 ,构成的原电池中,为什么负极是铝?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn