新手问个问题:关于moveto的使用精度问题。在线揭帖,望指教!(200分)

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

hammer_shi

Unregistered / Unconfirmed
GUEST, unregistred user!
image.canvas.moveto()只能带integer类型的参数,这样画的想垂直平分线等就
非常的不精确,大家怎么处理这类问题呀?
我看help中有个单独的moveto函数可以带double型的参数,但是它属于TBaseReport的,是不是使用就需要重载呀?

谢谢你的回答。
 
MoveTo不画线,LineTo才画线。
 
谢谢你的回答。
或许我说得不清楚。我知道lineto才是画线的函数,但是在使用lineto前先要定起始点的位置,应该是moveto函数了,但是moveto函数不支持如下使用moveto(1.1,2.3),这个请问你是怎么处理的?
再次感谢!
 
你想这样除非让它们都剩上10, 变成11,23
 
wlmmlw,这个我也想过,但是对于直线 Y=aX+b 来说不一定乘以10就可以了。我有的直线斜率使用extended计算到0.0000*了,这样不会说做个循环变成整数吧?
我看了一下delphi的moveto函数,他是
function MoveToEx; external gdi32 name 'MoveToEx';
对于window的画图函数不熟,不知道他使用什么函数可以定位到小数位.画图工具autocad使用的就可以定位到小数位。
谢谢你的继续关注。
 
好象不行,moveto()只能用整数,就是不能再分的象素点,我画图都是把坐标转成整数的
 
由于你的屏幕,或打印机,不管是什么影射模式,都是使用整数的
你的屏幕最多有600行(?),你再精确,总不能画1.5个点吧!
 
moveto用的单位是象素,象素是不能在分了,如果你用的小数,
那将你用的小数的单位转换为像素,在四舍五入就行了,在显示上
你用肉眼是看不出来的,存储时用小数存储。
任何软件内部都是这样作的,你看到的只是表现新式而已。
autocad是可以定位到小数位,但他用的单位不是像素。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
927
SUNSTONE的Delphi笔记
S
后退
顶部