NEWS

[C#] Chia sẽ source code Blur Login Form trên Winform

[C#] Chia sẽ source code Blur Login Form trên Winform
Đăng bởi: Thảo meo - Lượt xem: 621 20:27:40, 24/07/2021C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẽ chia sẽ đến các bạn cách thiết kế giao diện login Form Blur trên lập trình C#, Winform.

[C#] Blur Login Form 

Các bạn xem giao diện demo ứng dụng:

blur_login_form

Các bạn thấy khi mở Form lên, ở bên ngoài màn hình login sẽ mờ đi giống Windows 10 Arcylic Blur.

Video Demo Blur Login:

Đầu tiền, các bạn tạo cho mình 1 class EffectBlur.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace TestAcrylicBlur
{
    class EffectBlur
    {
        internal enum AccentState
        {
            ACCENT_DISABLED = 0,
            ACCENT_ENABLE_GRADIENT = 1,
            ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
            ACCENT_ENABLE_BLURBEHIND = 3,
            ACCENT_ENABLE_ACRYLICBLURBEHIND = 4,
            ACCENT_INVALID_STATE = 5
        }

        [StructLayout(LayoutKind.Sequential)]
        internal struct AccentPolicy
        {
            public AccentState AccentState;
            public uint AccentFlags;
            public uint GradientColor;
            public uint AnimationId;
        }

        [StructLayout(LayoutKind.Sequential)]
        internal struct WindowCompositionAttributeData
        {
            public WindowCompositionAttribute Attribute;
            public IntPtr Data;
            public int SizeOfData;
        }

        internal enum WindowCompositionAttribute
        {
            WCA_ACCENT_POLICY = 19
        }
    }
}

Tiếp theo, là source code FrmMain.cs

using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using static TestAcrylicBlur.EffectBlur;

namespace TestAcrylicBlur
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }


        #region Code to blur form

        [DllImport("user32.dll")]
        internal static extern int SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data);

        private uint _blurOpacity;

        public double BlurOpacity
        {
            get { return _blurOpacity; }
            set { _blurOpacity = (uint)value; EnableBlur(); }
        }

        private uint _blurBackgroundColor = 0x990000; 

        internal void EnableBlur()
        {

            var accent = new AccentPolicy();
            accent.AccentState = AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND;
            accent.GradientColor = (_blurOpacity << 24) | (_blurBackgroundColor & 0xFFFFFF);  
            var accentStructSize = Marshal.SizeOf(accent);
            var accentPtr = Marshal.AllocHGlobal(accentStructSize);
            Marshal.StructureToPtr(accent, accentPtr, false);
            var data = new WindowCompositionAttributeData();
            data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY;
            data.SizeOfData = accentStructSize;
            data.Data = accentPtr;
            SetWindowCompositionAttribute(this.Handle, ref data);
            Marshal.FreeHGlobal(accentPtr);
        }
        #endregion


        #region Blur form on form load
        private void Form1_Load(object sender, EventArgs e)
        {
            EnableBlur();
            this.BackColor = System.Drawing.ColorTranslator.FromHtml("#010000");
            var frm = new FrmLogin();
            frm.ShowDialog();
        }
        #endregion


      
    }
}

Và cuối cùng các bạn chỉ cần thiết kế giao diện login form để bài viết mình có hướng dẫn để hiển thị.

Thanks for watching!

DOWNLOAD SOURCE

 

Tags: blur login form c#login form c#login csharp

THÔNG TIN TÁC GIẢ

THẢO LUẬN BÀI VIẾT

BÀI VIẾT LIÊN QUAN

[C#] Chia sẽ source code Blur Login Form trên Winform
Đăng bởi: Thảo meo - Lượt xem: 621 20:27:40, 24/07/2021C#   In bài viết

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

.