将图片框中的图像从业务逻辑 Class 设置到主应用程序 Class
Set image in Picture-box from Business Logic Class to Main application Class
我根据软件架构写了一个c#代码。在业务逻辑层中,我实现了一个代码,通过它我可以从维基百科 api 中提取数据以获取图像。我想在 Form1.cs
的应用层上显示它。但它根本不起作用。我从维基百科获取图像的代码如下所示:
public class ImageService
{
private string _baseUrl = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=pageimages&pithumbsize=400&titles={0}";
public string GetImage(string name)
{
string requestUrl = string.Format(_baseUrl, name);
string result;
using (WebClient client = new WebClient())
{
var response = client.DownloadString(new Uri(_baseUrl));
var responseJson = JsonConvert.DeserializeObject<ImgRootobject>(response);
var firstKey = responseJson.query.pages.First().Key;
result = responseJson.query.pages[firstKey].thumbnail.source;
string Image_title = responseJson.query.pages[firstKey].title;
}
return result;
}
}
我的Form1.cs
是:
public partial class Form1 : Form
{
private readonly ImageService _imageService;
public Form1()
{
_imageService = new ImageService();
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.LoadAsync(_imageService);
}
}
您没有从ImageService
returns 字符串中调用GetImage
方法。 PictureBox
的 LoadAsync
方法接受一个 string 作为它的参数,但是你已经向它发送了一个 ImageService
的实例。应该是这样的:
pictureBox1.LoadAsync(_imageService.GetImage(a string parameter for name));
我根据软件架构写了一个c#代码。在业务逻辑层中,我实现了一个代码,通过它我可以从维基百科 api 中提取数据以获取图像。我想在 Form1.cs
的应用层上显示它。但它根本不起作用。我从维基百科获取图像的代码如下所示:
public class ImageService
{
private string _baseUrl = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=pageimages&pithumbsize=400&titles={0}";
public string GetImage(string name)
{
string requestUrl = string.Format(_baseUrl, name);
string result;
using (WebClient client = new WebClient())
{
var response = client.DownloadString(new Uri(_baseUrl));
var responseJson = JsonConvert.DeserializeObject<ImgRootobject>(response);
var firstKey = responseJson.query.pages.First().Key;
result = responseJson.query.pages[firstKey].thumbnail.source;
string Image_title = responseJson.query.pages[firstKey].title;
}
return result;
}
}
我的Form1.cs
是:
public partial class Form1 : Form
{
private readonly ImageService _imageService;
public Form1()
{
_imageService = new ImageService();
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.LoadAsync(_imageService);
}
}
您没有从ImageService
returns 字符串中调用GetImage
方法。 PictureBox
的 LoadAsync
方法接受一个 string 作为它的参数,但是你已经向它发送了一个 ImageService
的实例。应该是这样的:
pictureBox1.LoadAsync(_imageService.GetImage(a string parameter for name));