NEWS

[C#] Hướng dẫn Flip Image Winform

[C#] Hướng dẫn Flip Image Winform
Đăng bởi: Thảo Meo - Lượt xem: 3395 07:39:22, 16/12/2020C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách Flip Image trong C#, Winform.

[C#] Flip Image Winform

Giao diện demo ứng dụng Flip Image C#:

flip_Image_csharp

Trong ứng dụng trên, chúng ta sẽ có thể lật ảnh theo chiều ngang hoặc chiều dọc.

Source code c#:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;

namespace FlipImage
{
    public partial class Form1 : Form
    {
        private Image loadedImage;

        public Form1()
        {
            InitializeComponent();
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    Image openedImage = Image.FromFile(openFileDialog1.FileName);

                    if (loadedImage != null)
                        loadedImage.Dispose(); 

                    loadedImage = openedImage;
                    picImage.Image = loadedImage;
                }
                catch (Exception)
                {
                    MessageBox.Show("Invalid Image");
                }
            }
        }

        private void btnFlipHorizontally_Click(object sender, EventArgs e)
        {
            if (loadedImage != null)
            {
                Image flippedImage = FlipImage(loadedImage, true, false);

                loadedImage.Dispose();
                loadedImage = flippedImage;

                picImage.Image = loadedImage;
            }
        }

        private void btnFlipVertically_Click(object sender, EventArgs e)
        {
            if (loadedImage != null)
            {
                Image flippedImage = FlipImage(loadedImage, false, true);

                loadedImage.Dispose();
                loadedImage = flippedImage;

                picImage.Image = loadedImage;
            }
        }

        private void btnFlipBoth_Click(object sender, EventArgs e)
        {
            if (loadedImage != null)
            {
                Image flippedImage = FlipImage(loadedImage, true, true);

                loadedImage.Dispose();
                loadedImage = flippedImage;

                picImage.Image = loadedImage;
            }
        }

        public static Image FlipImage(Image image, bool flipHorizontally, bool flipVertically)
        {
            Bitmap flippedImage = new Bitmap(image.Width, image.Height);

            using (Graphics g = Graphics.FromImage(flippedImage))
            {
                //Matrix transformation
                Matrix m = null;
                if (flipVertically && flipHorizontally)
                {
                    m = new Matrix(-1, 0, 0, -1, 0, 0);
                    m.Translate(flippedImage.Width, flippedImage.Height, MatrixOrder.Append);
                }
                else if (flipVertically)
                {
                    m = new Matrix(1, 0, 0, -1, 0, 0);
                    m.Translate(0, flippedImage.Height, MatrixOrder.Append);
                }
                else if (flipHorizontally)
                {
                    m = new Matrix(-1, 0, 0, 1, 0, 0);
                    m.Translate(flippedImage.Width, 0, MatrixOrder.Append);
                }

                //Draw
                g.Transform = m;
                g.DrawImage(image, 0, 0);

                //clean up
                m.Dispose();
            }

            return (Image)flippedImage;
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("https://laptrinhvb.net/");
        }
    }
}

Thanks for watching!

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Hướng dẫn Flip Image Winform
Đăng bởi: Thảo Meo - Lượt xem: 3395 07:39:22, 16/12/2020C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.