C# 在WinForms中将img从url加载到DataGridView
我将数据加载到网格的过程如下所示: MainForm.csC# 在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
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位图没有带
流和大小的构造函数,因此您必须首先获得图像,然后使用大小参数创建位图