将图片加载到Delphi中的图像控件

5

你好,我目前正在开发一个程序,希望添加一个按钮,让用户可以从他的电脑中加载一张图片到图像中。

procedure TForm1.btnLoadPicClick(Sender: TObject);
 begin
 img1.Picture.LoadFromFile( 'test.1');
 img1.Stretch := True ;

我使用了这段代码,但它仅限制了用户只能使用特定图片,我希望他可以从电脑上选择一张图片。谢谢 :)

3个回答

14
你需要显示一个打开对话框:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TOpenDialog.Create(self) do
    try
      Caption := 'Open Image';
      Options := [ofPathMustExist, ofFileMustExist];
      if Execute then
        Image1.Picture.LoadFromFile(FileName);
    finally
      Free;
    end;
end;

4
Create/try/.../finally/Free/end 这样的结构中,为了避免发送大量不必要的通知消息到整个应用程序中,建议省略拥有者(Self)并使用 Create(nil) - Francesca
2
你甚至可以使用 TOpenPictureDialog,这样用户在选择文件时就可以看到预览。这个组件现在仍然存在,不是吗? - Rob Kennedy
2
@François:有时候组件需要一个所有者,而不仅仅是为了被销毁,例如poOwnerFormCenter。 - Uli Gerhardt
@Ulrich Gerhardt:没错,但我认为这种情况极其罕见,而且当所有者是主窗体时,甚至不需要使用poOwnerFormCenter。而在这种情况下根本不需要。 - Francesca
1
@LionsFan:我刚在窗体上放置了一个TImage控件。 - Andreas Rejbrand
显示剩余2条评论

1

首先在您的表单上放置一个Timage和一个OpenPictureDialog,然后在uses子句中添加jpeg。然后在btnLoadPic的点击事件中放置以下代码:

procedure TForm1.btnLoadPicClick(Sender: TObject);

Begin

    If not OpenPictureDialog1.Execute Then
       Exit;
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    //If not (Image1.Picture.Graphic is TJPEGImage) Then

    //raise Exception.Create('File not JPEG image');

结束;

如果您只想要JPEG图像,则取消注释已注释的行。在对象检查器中,您可以将Timage属性Stretch设置为True。


-1

为了打开一个图形文件,让用户自己选择文件,必须在表单上放置 TImageTOpenPictureDialogTButton 组件。

将以下代码放置在按钮的单击处理程序中:

If OpenPictureDialog1.Execute then
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

为了打开代码顶部的JPEG和PNG文件,在使用行中我们需要加入这两个库的名称:JPEGPNGImage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接