PictureBox加载图片的3种方法

本文介绍了使用PictureBox在Windows Forms应用程序中加载图片的三种方法:从文件加载、通过ImageList控件加载和从程序资源文件加载。分别展示了如何设置图片路径、调整ImageList的图片大小以及如何从程序集读取嵌入的资源图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 需要注意的是,当在工程中导入图片后,可以点击图片右击显示属性,在生成操作中可以设置内容或嵌入资源,这两种设置直接关系到下面取图片的方法,详情请看代码:
  2. using  System;  
  3. using  System.Linq;  
  4. using  System.Collections.Generic;  
  5. using  System.ComponentModel;  
  6. using  System.Data;  
  7. using  System.Drawing;  
  8. using  System.Text;  
  9. using  System.Windows.Forms;  
  10.   
  11. namespace  PictureBoxControlTest  
  12. {  
  13.     public  partial  class  Form1 : Form  
  14.     {  
  15.         public  Form1()  
  16.         {  
  17.             InitializeComponent();  
  18.         }  
  19.   
  20.         private   void  button1_Click( object  sender, EventArgs e)  
  21.         {  
  22.             //从图片文件载入   
  23.             //下面的路径是写死的,可以获取程序运行路径,这样更灵活   
  24.             pictureBox1.Image = new  Bitmap(@ "/Program Files/PictureBoxControlTest/tinyemulator_content.jpg" );  
  25.         }  
  26.   
  27.         private   void  button2_Click( object  sender, EventArgs e)  
  28.         {  
  29.             //通过imageList控件载入,这种方法的好处是可以设置图片的大小   
  30.             imageList1.ImageSize = new  Size(92,156);  
  31.             pictureBox1.Image = imageList1.Images[0];  
  32.         }  
  33.   
  34.         private   void  button3_Click( object  sender, EventArgs e)  
  35.         {  
  36.             //从程序的资源文件载入.这样做的好处是无需发布图片,已经被整合到程序集中去了.   
  37.             Bitmap bmp=new  Bitmap (System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream  
  38.                 ("PictureBoxControlTest.tinyemulator_res.jpg" ));  
  39.             pictureBox1.Image =bmp;  
  40.         }  
  41.   
  42.         private   void  menuItem1_Click( object  sender, EventArgs e)  
  43.         {  
  44.             Application.Exit();  
  45.         }  
  46.   
  47.     }  

<think>我们正在处理一个关于在C# Windows Forms中加载图片PictureBox控件的问题。根据引用,我们可以总结出几种方法。 引用[1]提到了设置PictureBox的BackGroundImageLayout和SizeMode属性来实现图片自适应。 引用[2]和[3]展示了加载图片的几种方法,特别是使用Image.FromFile()方法从文件加载。 根据这些引用,我们可以提供以下方法: 1. 使用Image.FromFile()方法加载本地图片文件,并赋值给PictureBox的Image属性。 2. 设置PictureBox的SizeMode属性为StretchImage,使图片自适应控件大小。 另外,我们还可以提供其他方法,比如使用资源文件、流等方式加载图片。 下面将详细说明几种常用的方法:</think>在 C# Windows Forms 应用中,为 PictureBox 控件加载图片主要有以下几种方法,同时需注意图片自适应显示问题: ### 一、基础加载方法 1. **从本地文件加载**(最常用) 使用 `Image.FromFile()` 方法加载图片文件: ```csharp // 获取当前程序路径下的图片 string imagePath = Application.StartupPath + @"\images\photo.jpg"; if (File.Exists(imagePath)) { pictureBox1.Image = Image.FromFile(imagePath); } ``` 2. **从项目资源文件加载** 适用于嵌入到程序集中的图片: ```csharp pictureBox1.Image = Properties.Resources.MyImage; // "MyImage" 为资源名 ``` 3. **从网络 URL 加载**(需处理异步) 使用 `HttpClient` 下载网络图片: ```csharp using (HttpClient client = new HttpClient()) { byte[] data = await client.GetByteArrayAsync("https://example.com/image.jpg"); using (MemoryStream ms = new MemoryStream(data)) { pictureBox1.Image = Image.FromStream(ms); } } ``` ### 二、关键自适应设置 要实现图片自动适应控件尺寸,需设置 `SizeMode` 属性(设计时或代码设置): ```csharp // 常用模式(选择其一) pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; // 保持比例缩放(无裁剪) pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; // 拉伸填充控件(可能变形) pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage; // 居中显示(不缩放) ``` ### 三、完整示例代码 ```csharp // 加载本地图片并自适应 string appPath = Application.StartupPath; string imageFile = Path.Combine(appPath, "assets", "logo.png"); if (File.Exists(imageFile)) { try { Image img = Image.FromFile(imageFile); pictureBox1.Image = img; pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; // 比例缩放 } catch (Exception ex) { MessageBox.Show($"加载失败: {ex.Message}"); } } else { MessageBox.Show("图片文件不存在"); } ``` ### 四、注意事项 1. **路径问题** - 使用 `Application.StartupPath` 获取 exe 所在目录 - 推荐 `Path.Combine()` 拼接路径(避免手动拼接斜杠错误) 2. **资源释放** 更换图片前手动释放旧资源: ```csharp if (pictureBox1.Image != null) { pictureBox1.Image.Dispose(); // 释放原有图像 } ``` 3. **异常处理** 捕获常见异常: - `FileNotFoundException` - 文件不存在 - `OutOfMemoryException` - 图片格式损坏 - `ArgumentException` - 无效文件格式 > **引用说明**: > 关于路径获取和自适应设置参考了 WinForm 中常见实践[^1],文件加载方法参考了标准 Image 类用法[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值