Загрузка и отображение картинки в Windows Forms c C#

Загрузка и отображение картинки в Windows Forms c C#

Загрузка и отображение картинки в Windows Forms c C#

Доброго времени суток!

В данном примере я покажу Вам как можно загрузить картинку из Интернета и отобразить
ее в пользовательском интерфейсе. Изображение будет отображаться при нажатии на кнопку
причем, каждый раз будет новое изображение.

Итак, ко:

Интерфейс MainForm.Designer.cs





namespace ShowImagwFromInternetWinForm

{

    partial class MainForm

    {

        /// <summary>

        ///  Required designer variable.

        /// </summary>

        private System.ComponentModel.IContainer components = null;



        /// <summary>

        ///  Clean up any resources being used.

        /// </summary>

        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

        protected override void Dispose(bool disposing)

        {

            if (disposing && (components != null))

            {

                components.Dispose();

            }

            base.Dispose(disposing);

        }



        #region Windows Form Designer generated code



        /// <summary>

        ///  Required method for Designer support - do not modify

        ///  the contents of this method with the code editor.

        /// </summary>

        private void InitializeComponent()

        {

            this.ImagePictureBox = new System.Windows.Forms.PictureBox();

            this.DownloadImageButton = new System.Windows.Forms.Button();

            ((System.ComponentModel.ISupportInitialize)(this.ImagePictureBox)).BeginInit();

            this.SuspendLayout();

            // 

            // ImagePictureBox

            // 

            this.ImagePictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 

            | System.Windows.Forms.AnchorStyles.Left) 

            | System.Windows.Forms.AnchorStyles.Right)));

            this.ImagePictureBox.BackColor = System.Drawing.SystemColors.ActiveCaption;

            this.ImagePictureBox.Location = new System.Drawing.Point(12, 12);

            this.ImagePictureBox.Name = "ImagePictureBox";

            this.ImagePictureBox.Size = new System.Drawing.Size(435, 462);

            this.ImagePictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;

            this.ImagePictureBox.TabIndex = 0;

            this.ImagePictureBox.TabStop = false;

            // 

            // DonwloadImageButton

            // 

            this.DownloadImageButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 

            | System.Windows.Forms.AnchorStyles.Right)));

            this.DownloadImageButton.Cursor = System.Windows.Forms.Cursors.Hand;

            this.DownloadImageButton.Location = new System.Drawing.Point(12, 496);

            this.DownloadImageButton.Name = "DonwloadImageButton";

            this.DownloadImageButton.Size = new System.Drawing.Size(435, 49);

            this.DownloadImageButton.TabIndex = 1;

            this.DownloadImageButton.Text = "Загрузить";

            this.DownloadImageButton.UseVisualStyleBackColor = true;

            this.DownloadImageButton.Click += new System.EventHandler(this.DonwloadImageButton_Click);

            // 

            // Form1

            // 

            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 19F);

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.ClientSize = new System.Drawing.Size(459, 557);

            this.Controls.Add(this.DownloadImageButton);

            this.Controls.Add(this.ImagePictureBox);

            this.Name = "Form1";

            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

            this.Text = "Главное окно";

            ((System.ComponentModel.ISupportInitialize)(this.ImagePictureBox)).EndInit();

            this.ResumeLayout(false);



        }



        #endregion



        private PictureBox ImagePictureBox;

        private Button DownloadImageButton;

    }

}





Код формы с логикой программы



using System.Net.Http;



namespace ShowImagwFromInternetWinForm

{

    public partial class MainForm : Form

    {

        public MainForm()

        {

            InitializeComponent();

        }





        /**

         * Загружает изображение 

         * и возвращает его как массив байт

         * 

         */

        private static byte[] DownloadImage(string url)

        {

            using var httpClient = new HttpClient();

            var response = httpClient.GetByteArrayAsync(url).Result;



            return response;

        }



        /**

         * 

         * Обработчик нажатия кнопки загрзки

         * 

         */

        private void DonwloadImageButton_Click(object sender, EventArgs e)

        {

            DownloadImageButton.Text = "Картинка загружается...";



            // вызываем загрузку внутри отдельной задачи, чтобы не блокировать интерфейс

            Task.Run(() =>

            {



                // загружаем картинку

                var imageBytes = DownloadImage("https://source.unsplash.com/random");



                // создаем объект Bitmap из массива байт

                var bitmap = new Bitmap(new MemoryStream(imageBytes));



                // Устанавливаем изображение для отображение пользователю

                ImagePictureBox.Image = bitmap;



                DownloadImageButton.Text = "Загрузить";

            });

        }

    }

}



Таким образом, при запуске этой программы Вы увидите пустое окно, в которое при нажатии на кнопку
будет загружено изображение.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий