Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)aaapublished in(发表于) 2014/7/19 0:13:32 delphi设置窗口范围
设置窗口范围SetWindowExtEx()和SetViewPortExtEx()函数可以定义Win32 将逻辑单位转换为设备单位的方式。这些函数只在窗口映射模式设为MM_ANISOTROPIC 或MM_ISOTROPIC 时才能使用,否则无效。因此,下面的代码的一个逻辑单位对应两个设备单位(像素):SetWindowExtEx(Canvas.Handle,1,1,nil) ;SetViewportExtEx(Caanvas.Handle,2,2,nil);同样,下面的代码的5 个逻辑单位需要10 个设备单位:SetWindowExtEx(Canvas.Handle,5,5,nil);SetViewportExtEx(Canvas.Handle,10,10,nil);注意,这与前面的例子完全一样。两者的逻辑与设备单位比都为1:2。下面的例子可以用来改变窗体的单位:SetWindowExtEx (Canvas.Handle, 500, 500, nil);SetWindowExtEx (Canvas.Handle, ClientWidth, ClientHeight, nil);注意,使用VCL 画布改变设备范围的映射模式是不稳定的,它可能恢复到原始状态。通常,映射模式必须由实际绘图句柄来设置。这样,不管窗体的尺寸多大,上面的代码都让用户工作在客户区的宽度和高度为500×500 单位(不是像素)的窗体上。SetWindowOrgEx()和SetViewportOrgEx()函数可重定位默认的原点(0,0)。此位置在MM_TEXT映射模式下位于窗体客户区左上角。通常情况下,只需要修改视区的原点。例如执行下面的代码:SetViewportOrgEx(Canvas.Handle,ClientWidthdiv2,ClientHeightdiv2,nil);注意:传递给SetWindowOrgEx()、SetWindowExtEx()、SetViewportOrgEx 和SetViewportExtEx()的最后一个参数是nil。SetWindowOrgEx()和SetViewportOrgEx()函数需要传递一个TPoint 结构,用来保存上次设置的原点,以便必要时恢复设备环境的原点。另外,SetWindowExtEx()和SetViewportExtEx()函数需要传递一个TSize 结构,用于保存设备环境的原先范围。
赞