WINDOWS中坐标变换(50分)

  • 主题发起人 主题发起人 hongsen
  • 开始时间 开始时间
H

hongsen

Unregistered / Unconfirmed
GUEST, unregistred user!
1。setviewportExt可以任意取值吗?<br><br>2。在逻辑坐标和设备坐标之外,还有一种物理坐标,这是怎么<br>回事?好象在OLE文档中用到这个概念,还有打印。<br><br><br><br>请诸位多多指教!
 
1. 改变viewport要根据mapmode来决定, 不是所有mapmode都能用, delphi的窗口的mapmode<br>都是MM_TEXT, 用setviewport无效. 具体参见win32.help. 可以取任何值. 对此值不同<br>mapmode有不同解释.<br><br>2. 参见win32.hlp "Transformation of Coordinate Spaces"
 
关于屏幕的分辨率:<br>&nbsp; &nbsp; 调整桌面的大小时,分辨率保持不变,也就是说桌面的象素<br>点数目不变,是吗?<br>&nbsp; &nbsp;对于固定比例的映射方式,如MM_HIENGLISH等,调整屏幕的大小<br>时,视图中的图形变形,为什么不保持固定的物理尺寸?固定尺寸是否<br>表示屏幕上看到的和打印出来的尺寸相等,抑或仅仅对打印起作用。
 
我希望大家能够对此问题提出看法和解答。
 
Win API ClientToScreen()<br>or <br>Win API ScreenToClient()<br>or <br>more 去查帮助把
 
我再解释一下这个问题提出的背景。<br>&nbsp; &nbsp;提出这个问题时,我正在看一个C++例子SCRIBBLE中关于输出OLE文档部分。我<br>对其中关于IN-PLACE编辑时的坐标变换(包括映射模式)理解不太清楚,故提出了<br>这个问题。请大家给我就其中的三个函数:CScribbleItem::OnDraw , <br>CScribbleItem::OnGetExtent , CScribbleView::OnPrepareDC 作些解释。
 
在VC中ONDRAW用来重画窗口,无论何时,只要你对窗口中的东西进行了<br>改变的话,就会调用这个函数。ONPREPAREDC主要是设备的前期设定工作。<br>由于机器里面的VC帮助不全。另外一个函数我不太清楚。
 
OnDraw 函数在每一次对屏幕进行重绘时调用,在其中可以放置一些对屏幕的操作,<br>比如画线(LINETO())或输出文本(TEXTOUT())等.OnGetExtent可以得到纵横坐标的<br>逻辑坐标与设备坐标的比例关系.OnprepareDC 是在调用绘制函数之前调用,在此<br>可以设置屏幕与打印的模式.<br><br>
 
多人接受答案了。
 
后退
顶部