我在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种写法的区别,谢谢!
 

解决方案 »

  1.   

    试过你的方法,画出来的没问题
    窗体上,放置image,然后画线,正常
      

  2.   

    我觉得不应该有问题的啊。。要不你在界面上添加个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里的用户区,即可以供用户修改部分窗口的高度
      

  3.   

    多谢帮忙。我是LZ。
    我用提供的那个方法试的不行,是应为我在IMAGE上初始设置了图片。
    如果初始不设置图片,则那个方法没有问题,竖线可以贯穿上下。
    所以应该是设置了图片的事。因为我想在图片上进行画线。
    请各位帮忙讲解,谢谢!
      

  4.   

    应该是你图片的实际高度超过了image的高度 然后对image 的Stretch属性设为TRUE了吧 应该先改变图像大小再画或者image的autosize 为TRUE
      

  5.   

    回楼上。
    我的image的Stretch  为True
              autosize 为False
    可是还是出现了这个问题。
      

  6.   

    把 stretch 设为FALSE  autosize 设为TRUE 就看到你想要的结果了 我给你的函数可以把图像等比例缩成一定的大小