TImage属性AutoSize和Stretch碰到的问题

背景:将Label按照比例动态放到图片的某个比例位置上:
实现方法:

procedure TfrmAd.SetLabelLayout();
begin
  lblDetail1.top := Trunc(imgImage.Height*400/1000);
  lblDetail1.Left :=Trunc(imgImage.Width*130/500);
end;

当时发现了一个奇怪的现象:

  imgImage.Height在第二天的时候突然取值偏大了,百般折腾,然后无意中拖放一个Tmemo进来(不做任何事情),imgImage.Height取值就正常了。去掉Tmemo就不正常。
很纳闷,【前一天为了调整图片的大小一定符合产品的需求956*988,对窗体的控件布局大改动过】,一直想应该是某个什么设定令其发生了这样的事情。

后来在同事帮忙查看下:发现了,我imgImage的AutoSize已经为True了,因为我一直记得我的设定是:AutoSize为False并且Stretch为True【我的初衷】,所以没有细看属性。

原来是前天,调整界面时,临时更改的,后来没有改回去。
原理:TImage的AutoSize和Stretch理应是互斥的,但是实际上不是,加载图片的时候先AutoSize生效,这个时候刚刚取值有偏差的值,再到 Stretch生效,图片伸缩为我设计的大小。
说明:上面放了一个Tmemo控件会影响到 imgImage.Height取到的值是 Stretch生效后的值。

posted @ 2016-12-06 16:19  海蓝7  阅读(613)  评论(0)    收藏  举报