【笨嘴拙舌WINDOWS】GDI映射方式
TextOut(hdc,100,100,TEXT(“Love China”),10)
这句GDI函数的作用是在坐标点(100,100)的位置输出一个“Love China”字符串:
GDI函数作为硬件设备(显示器,打印机)的接口封装中间层,其传入的参数坐标值(100,100)要在设备上哪个位置显示,是通过GDI映射方式定义的!也就是说:
(100,100) ----------------通过方式A映射之后,可以变成----------------》(1,1)
(100,100) ----------------通过方式B映射之后,可以变成----------------》(10,1)
(100,100) ----------------通过方式C映射之后,可以变成----------------》(1,3)
(100,100) ----------------通过方式C映射之后,可以变成----------------》(5,1)
左边这一列的坐标(100,100)就是一个逻辑坐标(所有GDI函数都是)
右边这一列的坐标(1,1)就是一个设备坐标
所谓映射,就是将一个值通过一个数学公式变成另外一个值
以下是WINDOWS定义的各种映射模式
“在默认情况下,WINDOWS的坐标原点在(0,0)点,但是可以通过调用SetWindowOrgEx来改变逻辑坐标点的原点,通过SetViewportOrgEx来改变设备坐标的原点;如果传入的参数有负号,还能够改变对应轴的正方向;X轴的正方向指向屏幕的右侧,不同的映射模式Y轴正方向不一样”
MM_TEXT 一个逻辑单位映射成一个像素 Y:指向屏幕下侧
MM_LOMETRIC 一个逻辑单位映射成0.1mm Y:(以下都指向上侧)
MM_HIMETRIC 一个逻辑单位映射成0.01mm
MM_LOENGHLISH 一个逻辑单位映射成0.01英寸
MM_HIENGLISH 一个逻辑单位映射成0.001英寸
MM_TWIPS 一个逻辑单位映射成1/1440英寸
MM_ISOTROPIC 一个逻辑单位映射成自定义的设备单位
MM_ANISOTROPIC 一个逻辑单位映射成自定义的设备单位
“黑色背景的映射方式能改变逻辑坐标(也叫窗口)或者设备坐标(也叫视口)的范围
不同之处:
MM_ISOTROPIC在设置范围时WINDOWS将自动调整使得,逻辑坐标的X与设备坐标的X之比=逻辑坐标的Y与设备坐标的Y之比
MM_ANISOTROPIC 不会调整”
要在距离窗口左边距100像素,上边距100像素的位置写出一个I love you, China可以使用如下提供的各种
Setmapmode(dc,MM_TEXT);
SetViewportorgEx(dc,100,100,nil);
逻辑坐标(0,0)对应设备坐标(100,100)textout(dc,0,0,'I love you, China',17);
Setmapmode(dc,MM_TEXT);
SetWindowOrgEx(dc,100,100,nil);逻辑坐标(100,100)对应设备坐标(0,0)
textout(dc,200,200,'I love you, China',17);Setmapmode(dc,MM_LOMETRIC);
textout(dc,356,-356,'I love you, China',17);Setmapmode(dc,MM_HIMETRIC);
textout(dc,3560,-3560,'I love you, China',17);Setmapmode(dc,MM_LOENGLISH);
textout(dc,140,-140,'I love you, China',17);Setmapmode(dc,MM_ISOTROPIC);
SetwindowExtEx(dc,getclientRect.Right,getclientrect.Bottom,nil);
SetViewportExtEx(dc,getclientRect.Right,-getclientrect.Bottom,nil);
textout(dc,100,100,'I love you, China',17);Setmapmode(dc,MM_ANISOTROPIC);
SetwindowExtEx(dc,getclientRect.Right,getclientrect.Bottom,nil);
SetViewportExtEx(dc,getclientRect.Right,getclientrect.Bottom,nil);
textout(dc,100,100,'I love you, China',17);
【笨嘴拙舌WINDOWS】GDI映射方式的更多相关文章
- 用 windows GDI 实现软光栅化渲染器--gdi3d(开源)
尝试用windows GDI实现了一个简单的软光栅化渲染器,把OpenGL渲染管线实现了一遍,还是挺有收获的,搞清了以前一些似是而非的疑惑. ----更新2015-10-16代码已上传.gihub地址 ...
- C# windows GDI+仿画图 绘图程序设计
C# windows GDI+仿画图 绘图程序设计 1.介绍 这里分享一个简单的画图程序 原作者:author: ping3108@163.com 2.程序主窗体设计 3.程序设计 本程序工程使用VS ...
- 图像处理---《在图片上打印文字 windows+GDI+TrueType字体》
图像处理---<在图片上打印文字 windows+GDI+TrueType字体> 刚开始使用的是putText()函数做,缺陷是只能显示非中文: 接着,看大多数推荐Freetype库来做 ...
- Delphi利用Windows GDI实现文字倾斜
Delphi利用Windows GDI实现文字倾斜 摘要 Delphi利用Windows GDI实现文字倾斜 procedure TForm1.FormPaint(Sender: TObject);v ...
- windows gdi+ Bitmap 总结
windows gdi+ 是对 windows gdi 的一个c++封装,同时增加了一些扩展功能,如反走样,样条曲线,变换矩阵,图像编解码等. gdi+ 相对于 gdi 也存在一些不足之处,如 执行效 ...
- Windows的GDI映射方式,逻辑坐标,设备坐标的理解
最近在学Win32的编程,看的是<Windows程序设计第5版>一书,这本书是台湾人翻译的,有些译法和大陆不一样,书中还有一些错误的地方,很多时候需要中英文对照阅读,下载请点击 https ...
- 【笨嘴拙舌WINDOWS】GDI对象之位图
GDI对象在windows中可以描述成为一次绘画操作时可使用的抽象工具.包括(画笔.画刷.字体.区域.调色板.位图等) GDI对象里的对象概念和在编程领域中面向对象编程的对象概念是不一样的! GDI对 ...
- 【笨嘴拙舌WINDOWS】GDI(1)
GDI:Graphics Device Interface 图形设备接口. 操作系统从命令行界面到图形界面的过度是施乐公司实验室对计算机普及作出的不可估量的贡献,苹果公司乔布斯与微软公司比尔盖茨对其的 ...
- 【笨嘴拙舌WINDOWS】GDI绘制区域
在默认情况下,Gdi绘画操作的使用白纸(窗口的客户区)黑字(Pen的颜色)!前面我们已经讲过如何改笔,现在来学习改变白纸(GDI的绘制区域) 正常的纸为一个矩形形状!有时候小孩不小心撕掉纸的一角,不小 ...
随机推荐
- 扫描二维码跳转app
1.判断是否安装了app <html> <head> <meta name="viewport" content="width=device ...
- ASP.NET登录控件延伸(个性化)
既然由登录控件涉及到了Membership,那么就不得不提到用户个性化Profile对象.个性化允许为用户保存特定的个性化信息到数据库中,因此它不同于ASP.NET状态管理之处在于可以永久性保存这些信 ...
- HDOJ 1050 Moving Tables
Moving Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- Find the smallest number whose digits multiply to a given number n
Given a number ‘n’, find the smallest number ‘p’ such that if we multiply all digits of ‘p’, we get ...
- hdu 2094 产生冠军(STL,set)
题目 //把所有的出现的名字开始默认都为冠军(1),然后输了的置为0,表示不为冠军,最后统计不为0的, //当有且只有一个不为0的,这个就为冠军,否则,不能产生冠军. //以上思路来自别人的博客.. ...
- iOS第三方支付-微信支付
微信支付用到的文件 1.首先支持非arc 2.设置URL types 3.AppDelegate - (BOOL)application:(UIApplication *)application di ...
- FastReport报表
http://www.fastreportcn.com/product/FASTREPORT_dotNET.html
- MYSQL 遭遇 THE TOTAL NUMBER OF LOCKS EXCEEDS THE LOCK TABLE SIZE
今天进行MySql 一个表数据的清理,经过漫长等待后出现 The total number of locks exceeds the lock table size 提示.以为是table_cache ...
- 构建高性能web之路------mysql读写分离实战
http://blog.csdn.net/cutesource/article/details/5710645 http://www.jb51.net/article/38953.htm http:/ ...
- 一个国外网盘pCloud——支持离线下载
给大家分享一个国外网盘<支持离线下载> https://my.pcloud.com/#page=register&invite=HiegZ8aBrt7