C# 在WinForms中将img从url加载到DataGridView

C# 在WinForms中将img从url加载到DataGridView,c#,image,winforms,datagridview,C#,Image,Winforms,Datagridview,我将数据加载到网格的过程如下所示: MainForm.cs public MainForm() { InitializeComponent(); _mainWindowViewModel = new MainWindowViewModel(); dgvMovies.DataSource = _mainWindowViewModel.MovieRowsViewModels; } public List<MovieRowViewModel> MovieRowsViewMo

我将数据加载到网格的过程如下所示:

MainForm.cs

public MainForm()
{
 InitializeComponent();
 _mainWindowViewModel = new MainWindowViewModel();
 dgvMovies.DataSource = _mainWindowViewModel.MovieRowsViewModels;    
}
public List<MovieRowViewModel> MovieRowsViewModels
        {
            get
            {
                return _movieRepository.GetAll().Select(n => new MovieRowViewModel
                {

                    ID = n.ID,
                    Title = n.Title,
                    Year = n.Year,
                    Poster = n.Poster
                }).ToList();
            }

    }
class MovieRowViewModel
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public int Year { get; set; }
        public string Poster { get; set; }
    }
MainWindowViewModel.cs

public MainForm()
{
 InitializeComponent();
 _mainWindowViewModel = new MainWindowViewModel();
 dgvMovies.DataSource = _mainWindowViewModel.MovieRowsViewModels;    
}
public List<MovieRowViewModel> MovieRowsViewModels
        {
            get
            {
                return _movieRepository.GetAll().Select(n => new MovieRowViewModel
                {

                    ID = n.ID,
                    Title = n.Title,
                    Year = n.Year,
                    Poster = n.Poster
                }).ToList();
            }

    }
class MovieRowViewModel
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public int Year { get; set; }
        public string Poster { get; set; }
    }
问题是如何将图像从url加载到此网格?

这对我很有用:

        DataTable t = new DataTable();
        t.Columns.Add("ID");
        t.Columns.Add("Poster");
        t.Columns.Add(new DataColumn("Img", typeof(Bitmap)));

        Bitmap b = new Bitmap(50, 15);
        using (Graphics g = Graphics.FromImage(b))
        {
            g.DrawString("Loading...", this.Font, new SolidBrush(Color.Black), 0f, 0f);
        }
        t.Rows.Add(new object[] { "1", "http://colorvisiontesting.com/images/plate%20with%205.jpg", b });
        dataGridView1.DataSource = t;

        ThreadPool.QueueUserWorkItem(delegate
        {
            foreach (DataRow row in t.Rows)
            {
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(row["Poster"].ToString());
                myRequest.Method = "GET";
                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
                System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream());
                myResponse.Close();
                row["Img"] = bmp;
            }
        });
我已经找到了答案,所以要归功于

编辑: 如果要指定加载图像的大小,则需要签出所有
Bitmap
构造函数:

有:

Bitmap b = new Bitmap(30, 10);
当涉及到从URI加载图像时,您必须更改

            foreach (DataRow row in t.Rows)
            {
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(row["Poster"].ToString());
                myRequest.Method = "GET";
                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
                Image img = Bitmap.FromStream(myResponse.GetResponseStream());
                System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(img, 30, 10);
                myResponse.Close();
                row["Img"] = bmp;
            }

从url到这个网格,您在这里谈论的是哪个url?海报是一个链接,但是是字符串。@entee位图没有带
大小
的构造函数,因此您必须首先获得
图像
,然后使用
大小
参数创建位图