坐标问题

wslmsx 2009-09-01 11:33:20
我在IMAGE上要进行画线操作。
image1.canvas.pen.color:=clblue;
image1.canvas.pen.width:=5;
image1.canvas.moveto(20,0);
image1.canvas.lineto(20,image1.height);
想在image1上,横坐标20处画一条竖线,从上到下,竖线长度正好是image1的高度。但是这样写出来,竖线只占了image1高度的一半左右。image1本身的height属性值为300,我即使改为image1.canvas.lineto(20,300);也不行。
而且用
image1.canvas.lineto(20,image1.Height);
image1.canvas.lineto(20,Height);
image1.canvas.lineto(20,ClientHeight);
这三种写法出来的线的长度都不一样,但是都没有符合我想要的从上到下贯穿整个image.
请帮忙给出实现这个问题的方法,并讲解上3种写法的区别,谢谢!
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lim_5258 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wslmsx 的回复:]
回楼上。
我的image的Stretch  为True
          autosize 为False
可是还是出现了这个问题。
[/Quote]
把 stretch 设为FALSE autosize 设为TRUE 就看到你想要的结果了 我给你的函数可以把图像等比例缩成一定的大小
yangxk666 2009-09-02
  • 打赏
  • 举报
回复
你的图片宽度是多少,不会是20吧?
wslmsx 2009-09-02
  • 打赏
  • 举报
回复
多谢帮忙。我是LZ。
我用提供的那个方法试的不行,是应为我在IMAGE上初始设置了图片。
如果初始不设置图片,则那个方法没有问题,竖线可以贯穿上下。
所以应该是设置了图片的事。因为我想在图片上进行画线。
请各位帮忙讲解,谢谢!
wslmsx 2009-09-02
  • 打赏
  • 举报
回复
回楼上。
我的image的Stretch 为True
autosize 为False
可是还是出现了这个问题。
swetter_hundsun 2009-09-02
  • 打赏
  • 举报
回复
我觉得不应该有问题的啊。。要不你在界面上添加个label,在图片出现后将image1.height,image1.width先打印到上边看看图片的高到底是不是你所说的高度300。

image1.canvas.lineto(20,image1.Height);
image1.canvas.lineto(20,Height);
image1.canvas.lineto(20,ClientHeight);

image1.height保存的是图片高度;height保存的是整个canvas的高度,其实界面也是画出来的,所以这个高度很可能包含了菜单栏的高度;ClientHeight是canvas里的用户区,即可以供用户修改部分窗口的高度
bdmh 2009-09-02
  • 打赏
  • 举报
回复
试过你的方法,画出来的没问题
窗体上,放置image,然后画线,正常
lim_5258 2009-09-02
  • 打赏
  • 举报
回复
应该是你图片的实际高度超过了image的高度 然后对image 的Stretch属性设为TRUE了吧 应该先改变图像大小再画或者image的autosize 为TRUE
sanguomi 2009-09-01
  • 打赏
  • 举报
回复
用窗口DC去画

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧