如何将存储在类中的图像文件调用到C#中的表单中?
我正在设计一个基于静态图像的小型交互式内部地图,并使用GIF在它们之间进行转换,以模拟3D运动。图像和GIF包含在图片框中。表单使用按钮触发picturebox,它根据位置保存特定的图像文件。基本上,每个picturebox要么是一面墙,要么用来模拟gif的运动 现在,通过在我的主窗体中的按钮单击事件中使用以下代码,我可以完美地实现这一点:如何将存储在类中的图像文件调用到C#中的表单中?,c#,image,bitmap,picturebox,C#,Image,Bitmap,Picturebox,我正在设计一个基于静态图像的小型交互式内部地图,并使用GIF在它们之间进行转换,以模拟3D运动。图像和GIF包含在图片框中。表单使用按钮触发picturebox,它根据位置保存特定的图像文件。基本上,每个picturebox要么是一面墙,要么用来模拟gif的运动 现在,通过在我的主窗体中的按钮单击事件中使用以下代码,我可以完美地实现这一点: pboxSCREEN.Image = new Bitmap(Path.Combine(Environment.CurrentDirectory, @"Re
pboxSCREEN.Image = new Bitmap(Path.Combine(Environment.CurrentDirectory, @"Resources\start2.jpg"));
但是,我想使用一个单独的类来保存变量中的所有图像文件,并在我的主窗体中的按钮单击事件中使用方法调用来获取需要显示的图像。这个想法是让单独的类存储我需要在主窗体中调用的“墙”。到目前为止,这是我在单独的课堂上学到的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace TheEldritchTruth
{
public class WallCollection
{
public Image img1 = null;
public WallCollection()
{
img1 = new Bitmap(Path.Combine(Environment.CurrentDirectory, @"Resources\resident.gif"));
}
public Image Img1
{
get { return img1; }
set { img1 = value; }
}
}
}
我正在设置一个变量,通过以下方式将类保存在表单中:
public WallCollection walls;
并在加载事件中初始化它:
WallCollection walls = new WallCollection();
我的问题是-如何从按钮的click事件中调用单独类中的方法?我尝试过几种不同的方法,但都没有成功,到目前为止,我有以下几种方法:
//FORWARD btn
public async void btnForward_Click(object sender, EventArgs e)
{
if (pos == 0)
{
pboxSCREEN.Visible = true;
pboxSCREEN.Image = walls.Img1;
//pBoxItem.Visible = false;
pos = 1;
}
}
我无法使用此逻辑获取要显示的图像,并出现以下错误:
“对象引用未设置为对象的实例。”
要在
前进
和后退
按钮中使用图像,不需要单独的类。您可以使用列表
在下面的代码中,我存储所有位图int列表位图
。当您需要位图时,可以通过以下索引调用它:位图[0]
用于第一个位图,位图[1]
用于第二个位图
代码示例:
public partial class Form1 : Form
{
List<Bitmap> bitmaps = new List<Bitmap>();
int pos = 0;
public Form1()
{
InitializeComponent();
AddBitmaps();
if (bitmaps.Count > 0)
{
pboxSCREEN.Image = bitmaps[0];
}
}
void AddBitmaps()
{
bitmaps.Add(new Bitmap(Path.Combine(Environment.CurrentDirectory, @"Resources\resident.gif")));
bitmaps.Add(new Bitmap(Path.Combine(Environment.CurrentDirectory, @"Resources\start2.jpg")));
}
public void btnForward_Click(object sender, EventArgs e)
{
if (pos > 0 && pos <= bitmaps.Count)
{
pos--;
pboxSCREEN.Visible = true;
pboxSCREEN.Image = bitmaps[pos];
}
}
public void btnBackward_Click(object sender, EventArgs e)
{
if (pos + 1 < bitmaps.Count)
{
pos++;
pboxSCREEN.Visible = true;
pboxSCREEN.Image = bitmaps[pos];
}
}
}
公共部分类表单1:表单
{
列表位图=新列表();
int pos=0;
公共表格1()
{
初始化组件();
添加位图();
如果(bitmaps.Count>0)
{
pboxSCREEN.Image=位图[0];
}
}
void AddBitmaps()
{
添加(新位图(Path.Combine(Environment.CurrentDirectory,@“Resources\resident.gif”));
添加(新位图(Path.Combine(Environment.CurrentDirectory,@“Resources\start2.jpg”));
}
public void btnForward_单击(对象发送者,事件参数e)
{
如果(位置>0和位置(&P)