【笨嘴拙舌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的绘制区域) 正常的纸为一个矩形形状!有时候小孩不小心撕掉纸的一角,不小 ...
随机推荐
- WPF编程学习——布局
本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面设计中,合理的元素布局至关重要, ...
- HDOJ 1220 Cube
CubeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- Telnet、FTP、SSH、SFTP、SCP
[Telnet]著名的终端访问协议,传统的网络服务程序,如FTP.POP和Telnet,其本质上都是不安全的:因为它们在网络上用明文传送数据.用户帐号和用户口令. [telnet命令]telnet h ...
- 彻底理解js中this的指向
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- [初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY
[初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY 发布者:sqqdugdu 时间:10-06 阅读数:2117 测试环境:RHEL 6.1,SecureCRT 5 ...
- jmeter学习预热
对jmeter有些兴趣,最近想抽点时间熟悉下,个人熟悉某个工具的方法: 1.官网http://jmeter.apache.org/,一般官网会有Tutorials或者Getting Started之类 ...
- JavaWeb-Eclipse的下载和安装
Eclipse下载地址:http://www.eclipse.org/downloads/ Eclipse集成JDK 遇见弹框: 1.这是由于缺少JRE所导致的,Eclipse中带有自己的编译器,因此 ...
- POJ 1458
#include <iostream> #include <string> #define MAXN 1000 using namespace std; string s_1; ...
- 在C#中读写INI配置文件(转)
在作应用系统开发时,管理配置是必不可少的.例如数据库服务器的配置.安装和更新配置等等.由于Xml的兴起,现在的配置文件大都是以xml文档来存储.比如Visual Studio.Net自身的配置文件Ma ...
- ExtJs之文本框及数字输入
结合HTML来理解, 比较容易. <!DOCTYPE html> <html> <head> <title>ExtJs</title> &l ...

