我在CScrollView中改变坐标的方向,把它x,y的正方向设成右上的,在pDC->SetMapMode(nMode)中,如果nMode为MM_LOMETRIC,就可以把x,y的正方向改成右上的,但是这种模式下的一个逻辑单位为0.1mm,而我想要的是MM_TEXT下的一个逻辑单位是一个象素的效果,哪位高手可以把坐标系中的x,y正方向改成右上的,且一个逻辑单位为一个象素的???请指点!!!!
解决方案 »
- 哪位大虾能帮我解释一下,实现一个mimefilter的最低要求是什么
- 怎么用BoundsChecker检查wince上运行的程序的内存泄漏啊
- CRichEditView如何用StreamIn和StreamOut实现读写txt文件?
- ActiveX 纯idispatch方式的使用, 帮我看看吧. 为什么我不能调用接口??
- 请教串口传输
- 有关字体的问题???
- 如何通过IDispatch接口获得所有的属性成员
- RICHEDIT控件的使用
- 为大家提供codeguru,codetools网站镜像光盘(约1.4G),有需要的吗?
- Client/Server的问题
- Direct Show中的播放*.dat文件的一个问题?那位大侠帮忙?
- 客户端程序运行时总是有10047错误
MM_TWIPS Each logical unit is converted to 1/20 of a point. (Because a point is 1/72 inch, a twip is 1/1440 inch.) Positive x is to the right; positive y is up.
pDC->SetWindowExt(1,1);
pDC->SetViewportExt(1,-1);
MM_LOENGLISH 0.01英寸
MM_HIENGLISH 0.001英寸
MM_LOMETRIC 0.1毫米
MM_HIMETRIC 0.01毫米
MM_TWIPS 1/1440英寸 这些都不符合,接近的只有MM_LOENGLISH 0.01英寸
-----------------------------------------------------------------------------
通过int CDC::SetMapMode( int nMapMode )可以指定映射方式,可用的有以下几种:
MM_HIENGLISH 每点对应0.001英寸 Each logical unit is converted to 0.001 inch. Positive x is to the right; positive y is up.MM_HIMETRIC 每点对应0.001毫米 Each logical unit is converted to 0.01 millimeter. Positive x is to the right; positive y is up.MM_LOENGLISH 每点对应0.01英寸 Each logical unit is converted to 0.01 inch. Positive x is to the right; positive y is up.MM_LOMETRIC 每点对应0.001毫米 Each logical unit is converted to 0.1 millimeter. Positive x is to the right; positive y is up.MM_TEXT 象素对应 Each logical unit is converted to 1 device pixel. Positive x is to the right; positive y is down.
以上几种映射默认的原点在屏幕左上方。除MM_TEXT外都为X坐标向右增加,Y坐标向上增加,和自然坐标是一致的。所以在作图是要注意什么时候应该使用负坐标。而且以上的映射都是X-Y等比例的,即相同的长度在X,Y轴上显示的长度都是相同的。
...http://www.powerba.com/develop/vc/article/20010621002.htm
pDC->SetWindowExt(1,1)和pDC->SetViewportExt(1,-1)就表示一个逻辑坐对应一个设备坐标,而设备坐标总是以像素为单位的,这样就实现了MM_TEXT的功能。SetViewportExt中把纵坐标方向的ext设成了-1,这样就实现了以向上为正方向。