【问题标题】:How to display an image in windows forms from a different device如何从不同的设备以 Windows 形式显示图像
【发布时间】:2017-06-03 13:36:21
【问题描述】:

好的,所以我正在寻找或多或少的快速解决问题的方法...在我构建的程序中,当 KeyDown 事件发生时,按钮上的图像会发生变化。最初,我通过说button1.Image = Image.FromFile(@"......"); 更改了图像 问题是,当我将程序放在 USB 上时,新计算机在同一路径上查找文件但找不到它,从而产生错误。加载的唯一图像是在设计器区域中使用的图像,即按钮开头的图像。因此,正因为如此,我制作了一大堆额外的按钮,为它们分配了我需要的图像,并使用 Button3.Hide(); 将它们全部隐藏起来。我把所有的button1.Image = Image.FromFile(@"...")都改成了Button1.Image = Button2.Image然后放到棒子上再试一次。 正如您可能已经猜到的那样,它没有用。有关如何使图像在所有计算机上工作的任何建议?

【问题讨论】:

  • 你为什么在你的问题中向我们隐藏路径?这不是什么秘密。如果您正在执行Image.FromFile(@"x:\funky\folder\images\incoming stuff\wednesday") 之类的操作,并且您的设备上不存在该路径,那么这就是问题所在。图片应该是 WinForms 资源;或相对于您的应用程序部署。确保您的路径始终是相对的而不是绝对的

标签: c# image winforms button path


【解决方案1】:

您可以将图像捆绑为可执行文件的一部分,方法是将它们设为嵌入式资源

  1. 单击项目 --> 属性。
  2. 在左侧,选择“资源”。
  3. 现在在顶部,单击“添加资源”旁边的下拉箭头 并选择“添加现有文件”。
  4. 导航到第一个图像文件并 双击它。
  5. 在图像的属性窗格中(右下角 默认情况下)将“Persistence”更改为“Embedded in.resx”。

对第二个图像文件重复步骤 #3 到 #5。

现在返回表单的设计模式并选择按钮。单击 Image 属性旁边的三个点“...”,您现在应该会看到在“项目资源文件:”区域下的下半部分列出的两个图像。从那里选择默认图像。

当 KeyDown() 事件发生时,您可以使用这样的代码来更改图像:

button1.Image = Properties.Resources.sv_privilege;

其中“sv_privilege”是您之前嵌入并希望切换到的资源的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2018-11-24
    相关资源
    最近更新 更多