(第四版中文版)一
来源:互联网 发布:爱情守望者 软件 编辑:程序博客网 时间:2024/05/04 14:57
一个点是否在某个矩形内:CRect xxx.PtInRect( point ) // 只适用于设备坐标系
CRect rectClient ;
GetClientRect(rectClient) // 获得矩形坐标
CRgn rgn.PtInRegion ; // 椭圆类,判断一个点是否在一个椭圆内、
MM_TEXT 映射模式:用来表示设备坐标,坐标被映射到像素:X向右递增,Y向下递增。可以通过调用CDC的SetViewportOrg 和 SetWindowOrg 来重新设置原点。
固定比例映射模式:(唯一的差别在于实际的比例因子)
映射模式 逻辑单位
MM_LOENGLISH 0.01英寸
MM_HIENGLISH 0.001英寸
MM_LOMETRIC 0.1mm
MM_HIMETRIC 0.01mm
MM_TWIPS 1/ 1440 英寸 // 常用于打印机,1TWIPS相当于 1/ 20 磅
可变比例模式:
MM_ISOTROPIC:纵横比总是1:1,不受比例因子变化影响
MM_ANISOTROPIC:X 和 Y 坐标可以独立变化,圆可被拉扁为椭圆
绘制一个椭圆,正好能在窗口中容下:
OnDraw(CDC *pDC)
{
CRect rectClient ;
GetClientRect( rectClient ) ;
pDC->SetMapMode( MM_ANISOTROPIC) ;
pDC->SetWindowExt( 1000, 1000 ) ;
pDC->SetViewPortExt( rectClient.right , - rectClient.buttom ) ;
pDC->SetViewPortOrg( rectClient . right / 2 , rectClient . buttom / 2 ) ;
pDC->Ellipse ( CRect ( -500 , -500 , 500 , 500 ) );
}
逻辑单位转化为设备单位的公式:
X比例因子 = X 视口范围 / X 窗口范围
Y比例因子 = Y 视口范围 / Y窗口范围
设备X = X逻辑*X比例因子 + X坐标原点偏移量
设备Y = Y逻辑*Y比例因子 + Y坐标原点偏移量
鼠标取得的坐标为设备坐标。
在设置了设备映射模式及相应参数后,CDC可以使用LPtoDP 和 DPtoLP 来进行逻辑坐标和设备坐标的转换。
PS:
1、可以认为CDC的所有成员函数都以逻辑坐标来作为参数
2、可以认为CWnd的成员函数都以设备坐标来作为参数
3、所有的选中测试( hit-test )操作都应该考虑设备坐标。区域的定义应该采用设备坐标。
4、某些像CRect::PtInRect() 只有在使用设备坐标才会有正确的结果。
5、将一些长期使用的值用逻辑坐标或物理坐标来保存。如果用设备坐标来保存某点,那么要是窗口移动一下,该点坐标将不再有效。
则判断一个点是否在圆内:
xxx(Point point)
{
Rect rect ;
CClientDC dc(this) ;
dc.SetMapMode( MM_LOENGLISH ) ;
dc.LPtoDP (rect) ;
if ( rect.PtInRect( point ) )
{
TRACE("mouse cursor is insinde rect/n") ;
}
}
应用程序框架 在调用 OnDraw() 之前调用 OnPrepareDC() 虚函数。可在 OnPrepareDC() 中用 SetMapMode()设置映射模式。
- (第四版中文版)一
- 《C++ Primer中文版》(第四版)信息汇总(一)
- 《C++ Primer中文版》(第四版)信息汇总(一)
- 发现《C++ primer》第四版中文版一处翻译错误
- 《Thinking In Java》第四版中文版读书笔记一
- (第四版中文版)[八]ActiveX
- (第四版中文版)[二]滚动视窗
- (第四版中文版)[五]模式态对话框
- (第四版中文版)[六]无模式对话框
- (第四版中文版)[十三]工具栏和状态栏
- C++ Primer中文版第四版 读书笔记
- C++ Primer第四版(中文版) pdf下载
- C++ Primer第四版中文版(电子版)
- 《视频解密》中文版(第四版) 第一章
- 《视频解密》中文版(第四版) 第四章 视频信号概述
- (第四版中文版)[三]Windows 的一些消息
- (第四版中文版)[六]进度条,滑杆,微调控件
- (第四版中文版)[七]Windows 通用对话框--嵌套对话框
- Java图形界面开发
- vs2003快捷键
- 表内记录单位转换
- 今天的
- 不要递给我花里胡俏的简历,给我一点简洁(不是简单)而能突出你自己的表达——面对成千上万的求职者,你真的以为HR会去看你那封100个人有99个差不多的求职信、和装订得像书本一样的简历模板内容吗?
- (第四版中文版)一
- CSDN软件英雄会流水帐
- 地狱或天堂
- x86 下 strcpy 高效实现
- 1
- 自己的Blog:)
- javascript由于编码不同造成乱码的问题
- HTML 4.0 语言参考
- 疑问:问号在C#变量定义时的作用!