jx,jy 表示计算机中的屏幕坐标!
x,y 表示实际坐标!屏幕的坐标的范围是: (0,0,jmaxX-1,jmaxY-1)
我们在屏幕中间画个十字,由来表示实际坐标的x和y轴,那么,
屏幕中的点 (jmaxX/2,jmaxY/2) 就为实际坐标的原点。我们给计算机原点jx0,和jy0赋值: jx0 := jmaxX div 2, jy0 := jmaxY div 2;再知道实际x,y的范围:
x = -maxX .. maxX
y = -maxY .. maxY现实中到计算机屏幕的比例为:
X的比例:maxX*2 : jmaxX
Y的比例:maxY*2 : jmaxY现实中的点 x1,y1 到屏幕中的点的值为:
jx1 := jx0 - (jmaxX*x1)/(maxX*2);
jy1 := jy0 - (jmaxY*y1)/(maxY*2);
x,y 表示实际坐标!屏幕的坐标的范围是: (0,0,jmaxX-1,jmaxY-1)
我们在屏幕中间画个十字,由来表示实际坐标的x和y轴,那么,
屏幕中的点 (jmaxX/2,jmaxY/2) 就为实际坐标的原点。我们给计算机原点jx0,和jy0赋值: jx0 := jmaxX div 2, jy0 := jmaxY div 2;再知道实际x,y的范围:
x = -maxX .. maxX
y = -maxY .. maxY现实中到计算机屏幕的比例为:
X的比例:maxX*2 : jmaxX
Y的比例:maxY*2 : jmaxY现实中的点 x1,y1 到屏幕中的点的值为:
jx1 := jx0 - (jmaxX*x1)/(maxX*2);
jy1 := jy0 - (jmaxY*y1)/(maxY*2);
jx1 := jx0 + (jmaxX*x1)/(maxX*2);
jy1 := jy0 + (jmaxY*y1)/(maxY*2);
x1 := (jx1-jx0)*(maxX*2/jmaxX);
y1 := (jy1-jy0)*(maxY*2/jmaxY);
Y坐标应该是减(-);jx1 := jx0 + (jmaxX*x1)/(maxX*2);
jy1 := jy0 - (jmaxY*y1)/(maxY*2);x1 := (jx1-jx0)*(maxX*2/jmaxX);
y1 := (jy0-jy1)*(maxY*2/jmaxY);这个我已经验证,没有问题,可以在你的程序中正常使用。
SetViewportOrgEx(Canvas.Handle, X, Y, nil);
SetWindowExtEx(Canvas.Handle, 1, 1, nil);
SetViewportExtEx(Canvas.Handle, 1, -1, nil);