读书人

imge让你想不到难题解决办法

发布时间: 2012-03-06 20:47:55 作者: rapoo

imge让你想不到难题
有一个image,picture调入jpg或bmp文件,哪个不定.而且文件的大小不定,为了让图片全部显示设置image1.Stretch:=true;然后在image1上放一个label,要求是在image的大小改变时,label相对图中的两条线的位置不发生变化.可以看效果图.上边的是开始的时候label的位置.下面是在image的打下改变后不应该的位置.第二副图,因为form的大小改变,所以label的位置改变了,想实现的方式是,form的大小改变时,label向对那两条线的位置不发生变化,应该和第一副图一样.我看了Stretch的原理,不过还是没有解决.请高手不吝赐教!!

[解决办法]
1显示jpg或者bmp图片
procedure ShowPicture;
Var
tpStream: TmemoryStream;
begin
//判断文件的扩展名是jpg的还是bmp的 可以根据打开的文件然后做字符判断
if IsJPG then
begin
tpStream:=TmemoryStream.Create;
try
tpStream.LoadFromFile(PicturePath+PictureName);
image.Picture.Graphic:=TjpegImage.Create;
image.Picture.Graphic.LoadFromStream(tpstream);
finally
tpstream.Free
end;
end else
image.Picture.LoadFromFile(PicturePath+PictureName);
end;
2,为了保持与那两条线平衡可以在窗体的OnCanResize事件里写相应代码
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
//采用窗体与LABEL比例的算法
//窗体原先的宽度为 Self.Width; 窗体改变后的大小为 NewWidth ;
//具体的算法应该是什么样的 根据你实际的情况
end;

读书人网 >.NET

热点推荐