打印A4,B5改变后,使打出的波形大小不变的有关问题
发布时间:2011-06-28 13:32:59 文章来源:www.iduyao.cn 采编人员:星星草
打印A4,B5改变后,使打出的波形大小不变的问题
我把波形放在PaintBox上,怎么样使打印的波形在A4和B5改变的情况下,打出的波形大小不变?下面的程序在A4,B5改变后,波形大小改变了。
void PrintImage(TPaintBox * SRE)
{
Printer()-> Canvas-> StretchDraw (
Rect(SRE-> Left*Printer()-> PageWidth /Panel1-> Width,
SRE-> Top*Printer()-> PageHeight /Panel1-> Height ,
(SRE-> Left+SRE-> Width)*Printer()-> PageWidth /Panel1-> Width ,
(SRE-> Top+SRE-> Height)*Printer()-> PageHeight /Panel1-> Height),
SRE-> Picture-> Graphic );
}
PaintBox放在Panel1上。
请问怎么样改能达到上述要求?
------解决方案--------------------
void Print_Bitmap(TCanvas *lpCanvas, TRect rectDest, Graphics::TBitmap *lpBitmap)
{
DIBSECTION DibSec;
GetObject(lpBitmap-> Handle, sizeof(DibSec), &DibSec);
StretchDIBits(lpCanvas-> Handle,
rectDest.Left, rectDest.Top,
(rectDest.Right-rectDest.Left), (rectDest.Bottom-rectDest.Top),
0, 0,
lpBitmap-> Width, lpBitmap-> Height,
DibSec.dsBm.bmBits,
(BITMAPINFO*)&DibSec.dsBmih,
DIB_RGB_COLORS,
SRCCOPY);
}
------解决方案--------------------
如果要保证打印到纸面的绝对尺寸不变,需要获得打印机的
输出分辨率才行,一般可以样计算:
(1)Printer()-> PageHeight
-> PageWidth
获得页面大小的长宽点数,Canvas按此单位
(2)DPIx=GetDeviceCaps(Printer()-> Handle,LOGPIXELSX)
DPIy=GetDeviceCaps(Printer()-> Handle,LOGPIXELSY)
获得当前打印机打印分辨率,注意:X,Y方向上可能不同,单位: 点/英寸
(3)根据分辨率和你需要的打印大小,缩放你的输出图形
例如: 打印机分辨率为600 dpi (X,Y向相同)
页面10*8 inch
则对程序而言打印机页面的Canvas大小会是: 6000*4800
具体的计算还不算太复杂
不妨试试
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
C#项目中如何更改项目保存的文件夹名?
求解。。
------解决方案--------------------
好像需要重构吧,同样求高人解答。
------...
-
C#中让TextBox只能输入数字的问题
我用的如下的代码:
static private Regex r = new Regex("^[0-9]{1,}$ ");
...
-
带数据库的程序打包注意什么?
打的包出错:Error:System.InvalidOperationException: ExecuteReader 要求已打开且可用的连接。连接的...
-
想学习一下网络程序开发 请给推荐几本书
学习基于http协议的程序开发 比如获取网页 分析网页 模拟网页操作 下载上传文档等知识 ...
-
qq的安装包是用什么工具?
想用.net制作一个想qq一样比较漂亮的安装包。有例子最好
------解决方案--------------------
新建->安...
-
C# 写的windows服务 调用 C++ dll 的问题
我封装了一个dll
用一个普通的winform程序 调用的时候没 问题。
但是放在C#写的服务程...
-
在VS2005中怎么调出 解决方案 那个图标?(图示)求解释~~~
这是我用的VS
这是我在教学视频上看到的VS
------解决方案------------...
-
寻友
有人在自学c#编程吗,可以互相认识一下,以后共同探讨学习中的问题……
------解决方案--------------------
朋友多了,路好走~
...
-
急!急!急!C#代码
怎样将数据库中的数据动态加载到Treeview控件中
------解决方案--------------------
C# code
void CreateTree(T...
-
救急??????????????????
哪位高手帮我一下,在C#中怎么写关于鼠标和键盘监听事件,我的程序就差监听鼠标和键盘是否动,然后定时关机这个功能了,请高手指点,...