procedure TForm1.FormResize(Sender: TObject);
var
  d,k:integer;
  i:integer;
begin
  image1.Top:=20;
  image1.Height:=self.ClientHeight-40;
  d:=image1.Height*9 div 10;
  image1.Width:=d;       //注:上面这部分省略可以看到下面画的线,但加上就不行了
  with image1.Picture.Bitmap.Canvas do
  begin
    pen.Width:=2;
    pen.Color:=clblack;
    MoveTo(image1.Width-10,20);
    lineto(image1.Width-10,100);//这儿画的线,为啥看不到呢,帮忙给看一下
  end;
end;

解决方案 »

  1.   

    image调整大小后,image1.Picture.Bitmap也需要调整一下
      

  2.   

    如你所说,还是不行
    procedure TForm1.FormResize(Sender: TObject);
    var
      d,k:integer;
      i:integer;
    begin
      image1.Top:=20;
      image1.Height:=self.ClientHeight-40;
      d:=image1.Height*9 div 10;
      image1.Width:=d;       //注:上面这部分省略可以看到下面画的线,但加上就不行了
      
      image1.Picture.Bitmap.Height:=image1.Height;
      image1.Picture.Bitmap.Width:=image1.Width;
      Image1.Picture.Bitmap.LoadFromFile('board2.bmp');
      with image1.Picture.Bitmap.Canvas do
      begin
        pen.Width:=2;
        pen.Color:=clblack;
        MoveTo(image1.Width-10,20);
        lineto(image1.Width-10,100);//这儿画的线,为啥看不到呢,帮忙给看一下
      end;
    end;
      

  3.   

    onresize好像是会触发很多次的,这个时机可能不太好
    我一般在onactive的第一次触发里设置
      

  4.   

    onresize有它的好处,主要是当改变大小时用的,我的目的也正是这样
      

  5.   

    如果将窗体拉伸
        MoveTo(image1.Width-10,20); 
        lineto(image1.Width-10,100);//这儿画的线,为啥看不到呢,帮忙给看一下 
    前面的X肯定是超出控件的宽度,你只要在改变时看一下这两个值就知道了
      

  6.   

      image1.Picture.Bitmap.Height:=image1.Height; 
      image1.Picture.Bitmap.Width:=image1.Width; 
      Image1.Picture.Bitmap.LoadFromFile('board2.bmp'); 
    改变一下顺序试试看:
      Image1.Picture.Bitmap.LoadFromFile('board2.bmp'); 
      image1.Picture.Bitmap.Height:=image1.Height; 
      image1.Picture.Bitmap.Width:=image1.Width; 
      
      

  7.   

    检查image1的autosize属性和strech属性
      

  8.   

    TImage大小改变后,与之对应的的Picture.Bitmap必须缩放到TImage一样的大小,再画线才能看到线条,否则,先画线条,因为TImage自动缩放图像,在“缩”的时候,就有可能把线条“缩”没了。
      

  9.   

    with image1.Picture.Bitmap.Canvas do 改为 image1.Canvas 在仔细分析你的业务,不要在 onresize 中写这样的代码。
      

  10.   

    可以说,你这段代码写得非常冗余,乱写一气。image1.Picture.Bitmap.Height:=image1.Height;
    image1.Picture.Bitmap.Width:=image1.Width;
    这种写法很不好。你描述下你要的功能,代码我可以给你写出来。
      

  11.   

    先谢谢你了,我要的是当窗口改变大小时,image1控件纵横比按10比9缩放
      image1.Top:=20; 
      image1.Height:=self.ClientHeight-40; 
      d:=image1.Height*9 div 10; 
      image1.Width:=d; 
    //上面代码便是实现这个目的,呵呵,我是想在image1控件里一个象棋棋盘的
    当然棋盘要有一个好看的背景了,所以导入了一张图片,所以便有下面的代码
    image1.Picture.Bitmap.Height:=image1.Height; 
      image1.Picture.Bitmap.Width:=image1.Width; //当然这两句也可以不写,有病乱投医加上的
      Image1.Picture.Bitmap.LoadFromFile('board2.bmp'); 
    //因为要锁定纵横比,所以在onResize事件中加了代码,别见笑,纵横比调整好后,画线的时候出现问题了,便是上面的问题,请帮忙解决一下
      
      

  12.   

    image1是否改变了?
        MoveTo(image1.Width-10,20);
        lineto(image1.Width-10,100);//这儿画的线,为啥看不到呢,帮忙给看一下
    这两行直接改成从左上角画到右下角的线,看看画线功能是否正常再说
    画线能正常显示了,再考虑是否是因为画的线不在画布上导致不能显示。
      

  13.   

    procedure TForm1.FormResize(Sender: TObject);
    var
      d,k:integer;
      i:integer;
    begin
    //以下两种,你挑一种{  image1.Top:=20;            //第一种,OK
      image1.Height:=self.ClientHeight-40;
      d:=image1.Height*9 div 10;
      image1.Width:=d;
      with image1.Canvas do
      begin
        pen.Width:=2;
        pen.Color:=clblack;
        MoveTo(image1.Width-10,20);
        lineto(image1.Width-10,100);
      end;
           }  image1.Top:=20;            //第二种,OK
      image1.Height:=self.ClientHeight-40;
      d:=image1.Height*9 div 10;
      image1.Width:=d;
      image1.Picture.Bitmap.Width:=image1.Width;
      image1.Picture.Bitmap.Height:=image1.Height;
      with image1.Picture.Bitmap.Canvas do
      begin
        brush.Color:=clwhite;
        fillrect(rect(0,0,image1.Width,image1.Height));
        pen.Width:=2;
        pen.Color:=clblack;
        MoveTo(image1.Width-10,20);
        lineto(image1.Width-10,100);
      end;
    end;
      

  14.   

    检查image1的autosize属性和strech属性
      

  15.   

    晕撒的,干啥子用TImage来搞!
    TImage处理了一票消息,我挺楼上的 毛老大的说法
    建议,楼主直接从TGraphicControl写一个自己处理绘制,会比TImage单纯许多