映射模式,easy or hardest??!!(300分)

  • 主题发起人 主题发起人 周仁
  • 开始时间 开始时间

周仁

Unregistered / Unconfirmed
GUEST, unregistred user!
一. 我正在编一个工程制图程序,由于关系到映射模式.原打算采用MM_HIMETRIC模式,
(因为该模式可按实图缩小比例真实显示,但由于1,2两个原因,而改采用MM_isotropic模式,
是否是我的理解出了问题?)

1.据有关书籍说明GetDeviceCaps()函数无法精确测定显示器的显示长.宽的毫米尺寸,
所以建筑实体尺寸不能精确地按比例缩小显示.即采用MM_HIMETRIC模式,没有实际意义.
此说法是否正确?
2.由于制图需的精度特高,按以下编程达不到[(1个逻辑单位:1mm建筑实体现实尺寸)<1]的比例,
此编法有无错误,请指正.....

PrevMapMode:=SetMapMode(PaintBox1.canvas.handle,MM_HIMETRIC);
PaintHorZ:=GetDeviceCaps(PaintBox1.canvas.handle,HORZSIZE);显示器的显示长的毫米尺寸270mm
PaintVert:=GetDeviceCaps(PaintBox1.canvas.handle,VERTSIZE);显示器的显示宽的毫米尺寸
ScreenHorZ:=GetDeviceCaps(PaintBox1.canvas.handle,HORZRES);
bl1:=(Maxx+RightSpace+LeftSpace)/(PaintHorZ*PaintBox1.ClientWidth*10/ScreenHorz);
//bl1:=(9000mm+2000mm+3000mm)/(270mm*10*750像素分辨率/1024像素分辨率)
{ 按制图内容为300米宽*200米高考虑,需要PaintBox1.canvas上有30万个逻辑单位*20万个逻辑单位,
MM_HIMETRIC模式下最多有(270mm*10*750像素分辨率/1024像素分辨率)=1977个逻辑单位,与期待值
相差甚远.}

blc:=(Maxy+TopSpace+BottomSpace)/(PaintHorZ*PaintBox1.ClientHeight*10/ScreenHorz);
if bl1>blc then
begin
blc:=bl1;
end;

3.采用MM_isotropic模式,作以下编程
PrevMapMode:=SetMapMode(PaintBox1.canvas.handle,MM_isotropic);
SetWindowExtEx(PaintBox1.canvas.handle,300000,200000,nil);
SetViewportExtEx( PaintBox1.canvas.handle,PaintBox1.ClientWidth,-PaintBox1.ClientHeight,nil);
//以上两句是否将PaintBox1.canvas制图显示范围与图纸内容30米*20米完全对应???
SetViewPortOrgEx(PaintBox1.canvas.handle,0,PaintBox1.ClientHeight,nil);
GetWindowExtEx(PaintBox1.canvas.handle,size);//此句为debug用.
//!!!毛病出处 size返回(-27680个逻辑单位,3392个逻辑单位),
// 并不是(300000个逻辑单位,200000个逻辑单位);
//如何获得当前屏幕的最大逻辑单位个数?!!
GetViewportExtEx(PaintBox1.canvas.handle,size1);
bl1:=(Maxx+RightSpace+LeftSpace)/300000;
blc:=(Maxy+TopSpace+BottomSpace)/200000;
if bl1>blc then
begin
blc:=bl1;
end;

4.采用MM_isotropic模式,采用哪个函数可得到当前分辨率下的屏幕最大逻辑单位数量?

二.由于工程形状多样,若图纸中有弧形轴线,我该如何制作轴交点自动吸附鼠标功能?
是否以某一轴交点为中心,计算环形区域的四角坐标,若在该区域内则吸附鼠标?

三.如何检验一环形区域段为封闭区域?若未封闭,则将此缺口进行直线连接.


四.在家里为何别的网页正常显示,而大富翁的网页只能显示台头,不能显示内容....!!!!
不知缘由,望赐教。没法子,只能在网吧上大富翁的网页.

五.还有那些网页如同大富翁论坛一样精彩的,望前辈赐教!!

以上问题请高手揭贴,若有源程序,我将给与加分!!!
期待斑竹,吕雪松兄及3wccel兄的至诚帮助!



















 
哇,我就不能答吗!
》以某一轴交点为中心,计算环形区域的四角坐标,若在该区域内则吸附鼠标
我认为应该反过来:以鼠标位置为中心,计算周围矩形区域的四角坐标,若交点
在该区域内则吸附鼠标
 
四.在家里为何别的网页正常显示,而大富翁的网页只能显示台头,不能显示内容....!!!!
不知缘由,望赐教。没法子,只能在网吧上大富翁的网页.
用高版本的IE就可以了.
-----------------------------------------
水晶控件
http://www.codeidea.com
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
601
import
I
后退
顶部