【问题标题】:Show image in TImage dynamically (at run time) without opendialog in c++ builder xe8在 C++ builder xe8 中不使用 opendialog 在 TImage 中动态显示图像(在运行时)
【发布时间】:2015-09-29 16:20:34
【问题描述】:

我想在运行时在 C++ builder xe8(不是 delphi)中动态创建(根据要求并完全通过编码)TImage 组件显示图像(png、jpg 等)。但我不想使用 opendialogbox(许多网站都建议)。我想在我的安卓设备上运行这个应用程序。我尝试使用 LoadFromFile(),它在 android 上使应用程序崩溃,但是当我在 Windows 上运行它时,它运行顺利。我只是 C++ 构建器的初学者。所以请大家帮忙。提前感谢任何形式的帮助。这就是我所做的。

void __fastcall TForm1::TForm1(TComponent* Owner)
{
TImage* img = new TImage(this);
img->Parent = this;
img->Bitmap->LoadFromFile("D:\\res\\profile.png");
}

【问题讨论】:

  • 您不需要 OpenDialog 来打开文件。 OpenDialog 提供的只是用户选择路径+文件名的一种方式,仅此而已。如果您已经知道要打开的路径 + 文件名,则只需打开它。如果你的代码崩溃了,你很可能做错了什么。请提供一个MCVE 来说明问题。

标签: android c++ c++builder


【解决方案1】:

你看到什么错误了吗?

如果您使用您提供的代码运行程序,我认为错误是找不到文件,因为在 android 中没有这样的目录“D:\”。

设置路径的一种方法是编写指向图像的静态路径。例如:“/storage/sdcard0/DCIM/Camera/MyImage.jpg”;

第二种方法是包含<System.IOUtils.hpp> 标头并使用一些内置函数,例如:

System::Ioutils::TPath::GetPicturesPath();
System::Ioutils::TPath::GetAlarmsPath();

您可以查看它们,它们可能有用。

【讨论】:

  • 对不起,但它不起作用,至少对我来说。我什至将 png 文件复制到项目文件夹,并使用此代码...img->Bitmap->LoadFromFile("profile.png"); 每当我在 android 上运行它时,我的应用程序崩溃,并且它显示 不幸的是“app_name”停止。 @Zdravko Donev。
  • 在调试模式下运行应用程序,检查错误并与我们分享。您可以像在 Windows 上的普通应用程序一样调试应用程序。错误将显示在您的屏幕上,而不是您的手机上。
  • 非常感谢先生,现在它正在工作......实际上这一切都是由于我对 LoadFromFile() 的误解而发生的。我虽然这样,如果我使用这个功能,它会复制那个图像,并与 dex 文件一起安装。但是当我根据 android 操作系统提到路径时,它工作正常。谢谢@Zdravko Donev。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
相关资源
最近更新 更多