代码之家  ›  专栏  ›  技术社区  ›  PhiS

如何在Delphi中绘制调整大小的timage的整个区域?

  •  4
  • PhiS  · 技术社区  · 15 年前

    我缩小了一个问题的范围。 TImage.Canvas 在Delphi 2009中,以下是可复制的案例:

    给出:表格,A TImage , TLabel TButton 关于它。这个 计时器 锚定到所有四条边,以便调整窗体大小将调整 时间 . 我想做的是利用 Image1 调整大小后可供我使用。所以在我的测试用例中,我的按钮中有以下代码 OnClick 汉德勒:

    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Label1.Caption:= IntToStr (Image1.Width)+' x '+IntToStr(Image1.Height);
      Image1.Canvas.Pen.Color:= 0;
      Image1.Canvas.Rectangle(0,0,Image1.Width, Image1.Height);
    end;
    
    您将看到,如果调整窗体的大小, Image1.Width .Height 按预期更改,但如果调整大小的窗体为 更大的 比原来的一个,将是不完整的,只画在同一个领域,以前有。

    我如何得到它使用整个调整大小的区域?

    因为它的价值,在我最初的问题中,我曾经玩过 Image1.Stretch ,这允许我在调整大小时使用更多的区域,但会导致我的绘图失真(不需要)。如果我也用 Image1.Proportional ,那就更好了,但我还是不能使用全部可用区域。 Image1.AutoSize 似乎对我也没什么帮助。

    感谢您的帮助。

    2 回复  |  直到 15 年前
        1
  •  7
  •   Svein Bringsli    15 年前

    向窗体中添加OnResize事件:

    procedure TForm1.FormResize(Sender: TObject);
    begin
      Image1.Picture.Bitmap.Width := Image1.Width;
      Image1.Picture.Bitmap.Height := Image1.Height;
    end;
    

    此外,如果使用组件进行绘制,而不是显示来自文件等的图像,请考虑使用tpaintbox而不是timage。

        2
  •  3
  •   Uli Gerhardt    15 年前

    可能还需要调整image1.picture.width/height或image1.picture.bitmap.width/height。