将“图片”框中的图像从“业务逻辑类”设置为“主应用程序类”

本文关键字:业务逻辑类 设置 应用程序 图片 图像 业务 | 更新日期: 2023-09-27 18:30:00

我根据软件体系结构编写了一个c#代码。在业务逻辑层中,我实现了一个代码,通过该代码可以从wikipediaapi中提取数据以获取图像。我想在应用层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调用GetImage方法。PictureBoxLoadAsync方法接受一个字符串作为它的参数,但你已经向它发送了一个ImageService的实例。它应该是这样的:

pictureBox1.LoadAsync(_imageService.GetImage(a string parameter for name));