C# WinForms PictureBox控件如何提取图片加载到Resources.resx
C# WinForms PictureBox control how to extract images loaded into Resources.resx
我正在尝试了解如何使用 WInForm PictureBox 控件进行操作。
我将简要描述我的应用程序是如何构建的,然后提出我的问题。
我使用的是 C# Visual Studio 2012,但是 Visual Studio 的版本可能无关紧要。
创建一个名为“FunWIthPictureBox”的新 WinForms 应用程序。
调出窗体的设计视图。
添加一个 PIctureBox 控件并将其命名为 pbxPicture。
单击图片框。您会注意到右上角有一个黑色箭头。
单击黑色箭头调出 PictureBox 任务对话框。单击“选择图像”选项。
这会弹出“Select资源”对话框。确保选中“项目资源文件”单选按钮。单击“导入”按钮导入图像。完成后再次单击“导入”并添加第二张图像。最后点击“确定”。我的图片名为“Picture1.jpg”和“Picture2.jpg”。
现在您已经将两个位图图像加载到项目的资源文件 (Properties\Resources.resx) 中。
双击窗体弹出窗体的加载事件。
您可以使用以下代码将 Picture Box 的图像设置为 Picture1.jpg...
pbxPicture.Image = FunWIthPictureBox.Properties.Resources.Picture1;
请注意,“FunWithPictureBox”是命名空间。
如果你想使用其他图片,你可以像这样更新代码行..
pbxPicture.Image = FunWIthPictureBox.Properties.Resources.图片2;
好的,到目前为止一切顺利。我正在尝试弄清楚如何提取所有已加载到 .Properties.Resources 中的图像并将这些图像加载到图像列表 (List) 中。
使用反射(和 Google)我能够想出以下内容..
(使用 System.Reflection 添加)
private void PictureBoxForm_Load(object sender, EventArgs e)
{
pbxPicture.Image = FunWithPictureBox.Properties.Resources.Picture1;
var properties = typeof(Properties.Resources).GetProperties(BindingFlags.NonPublic | BindingFlags.Static);
foreach (var propertyinfo in properties)
{
if (propertyinfo.PropertyType.ToString() == "System.Drawing.Bitmap")
{
MessageBox.Show(propertyinfo.Name + " " + propertyinfo.PropertyType.ToString());
}
}
}
这几乎给了我想要的东西。我能够从资源文件中识别图像。
如何将这些图像添加到图像列表中?我知道图像的名称,但不知道如何访问图像并将其添加到列表中。
像这样...
private void PictureBoxForm_Load(object sender, EventArgs e)
{
List<Image> lstImages = new List<Image>();
pbxPicture.Image = FunWithPictureBox.Properties.Resources.Picture1;
var properties = typeof(Properties.Resources).GetProperties(BindingFlags.NonPublic | BindingFlags.Static);
foreach (var propertyinfo in properties)
{
if (propertyinfo.PropertyType.ToString() == "System.Drawing.Bitmap")
{
lstImages.Add(propertyinfo.Name); //This code does not wwork :-(
}
}
}
有办法吗?
尝试将代码更改为:
private void PictureBoxForm_Load ( object sender , EventArgs e ) {
List<Image> lstImages = new List<Image> ( );
//pbxPicture.Image = FunWithPictureBox.Properties.Resources.Picture1;
var properties = typeof ( Properties.Resources ).GetProperties ( System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static );
foreach ( var propertyinfo in properties ) {
if ( propertyinfo.PropertyType.ToString ( ) == "System.Drawing.Bitmap" ) {
lstImages.Add ( ( Bitmap ) Properties.Resources.ResourceManager.GetObject ( propertyinfo.Name ) );
}
}
}
Property.Resources 有一个 属性 名为 Resourcemanager 并且它有一个函数 return 一个对象使用她的名字,你如何使用 propertyInfo.Name 它可能 return 位图。
我正在尝试了解如何使用 WInForm PictureBox 控件进行操作。
我将简要描述我的应用程序是如何构建的,然后提出我的问题。
我使用的是 C# Visual Studio 2012,但是 Visual Studio 的版本可能无关紧要。
创建一个名为“FunWIthPictureBox”的新 WinForms 应用程序。 调出窗体的设计视图。
添加一个 PIctureBox 控件并将其命名为 pbxPicture。
单击图片框。您会注意到右上角有一个黑色箭头。
单击黑色箭头调出 PictureBox 任务对话框。单击“选择图像”选项。
这会弹出“Select资源”对话框。确保选中“项目资源文件”单选按钮。单击“导入”按钮导入图像。完成后再次单击“导入”并添加第二张图像。最后点击“确定”。我的图片名为“Picture1.jpg”和“Picture2.jpg”。
现在您已经将两个位图图像加载到项目的资源文件 (Properties\Resources.resx) 中。
双击窗体弹出窗体的加载事件。
您可以使用以下代码将 Picture Box 的图像设置为 Picture1.jpg... pbxPicture.Image = FunWIthPictureBox.Properties.Resources.Picture1; 请注意,“FunWithPictureBox”是命名空间。
如果你想使用其他图片,你可以像这样更新代码行.. pbxPicture.Image = FunWIthPictureBox.Properties.Resources.图片2;
好的,到目前为止一切顺利。我正在尝试弄清楚如何提取所有已加载到 .Properties.Resources 中的图像并将这些图像加载到图像列表 (List) 中。
使用反射(和 Google)我能够想出以下内容..
(使用 System.Reflection 添加)
private void PictureBoxForm_Load(object sender, EventArgs e)
{
pbxPicture.Image = FunWithPictureBox.Properties.Resources.Picture1;
var properties = typeof(Properties.Resources).GetProperties(BindingFlags.NonPublic | BindingFlags.Static);
foreach (var propertyinfo in properties)
{
if (propertyinfo.PropertyType.ToString() == "System.Drawing.Bitmap")
{
MessageBox.Show(propertyinfo.Name + " " + propertyinfo.PropertyType.ToString());
}
}
}
这几乎给了我想要的东西。我能够从资源文件中识别图像。
如何将这些图像添加到图像列表中?我知道图像的名称,但不知道如何访问图像并将其添加到列表中。
像这样...
private void PictureBoxForm_Load(object sender, EventArgs e)
{
List<Image> lstImages = new List<Image>();
pbxPicture.Image = FunWithPictureBox.Properties.Resources.Picture1;
var properties = typeof(Properties.Resources).GetProperties(BindingFlags.NonPublic | BindingFlags.Static);
foreach (var propertyinfo in properties)
{
if (propertyinfo.PropertyType.ToString() == "System.Drawing.Bitmap")
{
lstImages.Add(propertyinfo.Name); //This code does not wwork :-(
}
}
}
有办法吗?
尝试将代码更改为:
private void PictureBoxForm_Load ( object sender , EventArgs e ) {
List<Image> lstImages = new List<Image> ( );
//pbxPicture.Image = FunWithPictureBox.Properties.Resources.Picture1;
var properties = typeof ( Properties.Resources ).GetProperties ( System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static );
foreach ( var propertyinfo in properties ) {
if ( propertyinfo.PropertyType.ToString ( ) == "System.Drawing.Bitmap" ) {
lstImages.Add ( ( Bitmap ) Properties.Resources.ResourceManager.GetObject ( propertyinfo.Name ) );
}
}
}
Property.Resources 有一个 属性 名为 Resourcemanager 并且它有一个函数 return 一个对象使用她的名字,你如何使用 propertyInfo.Name 它可能 return 位图。