C# 그라디언트 판넬 컨트롤 만들기 Gradient Panel in Windows form App

 

1. 폼을 만든다. 

 

2. 클래스를 만들어서 다음과 같이 코딩한다. 

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Monitor0._2.UI_Forms
{
    class GradientPanel : Panel
    {
        public Color ColorTop { get; set; }
        public Color ColorBottom { get; set; }

        protected override void OnPaint(PaintEventArgs e)
        {
            LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle, this.ColorTop, this.ColorBottom,90f);
            Graphics g = e.Graphics;
            g.FillRectangle(lgb, this.ClientRectangle);

            base.OnPaint(e);
        }

    }
}

3 다시 빌드한다. (Rebuild) 

 

4. 도구상자에 GradientPanel이 추가됐다. GradientPanel를 폼에 추가한다. 

그리고 속성에서 ColorBottom, ColorTop를 아무 색깔이나 설정한다. 

 

'기타 ETC > C#' 카테고리의 다른 글

C# 에서 IP 주소 가져오는 방법  (0) 2020.03.27
c# 둥근 버튼 만들기  (0) 2020.03.24
C# DragControl 만들기  (0) 2020.03.24
C# 윈폼 Form(폼) 둥글게 타원으로 만드는 방법  (0) 2020.03.24
Form Drag  (0) 2020.03.19

1. 폼을 생성한다. 

 

2. 도구상자에서 panel(판넬)을 Form(폼)으로 드래그 한다. 

 

3. 판넬 Dock을 Top으로 설정한다. 

 

4. 클래스파일을 추가하고 다음과 같이 코딩한다. 

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

namespace Monitor0._2.UI_Forms
{
    class DragControl : Component
    {
        private Control handleControl;

        public Control SelectControl
        {
            get
            {
                return this.handleControl;
            }
            set
            {
                this.handleControl = value;
                this.handleControl.MouseDown += new MouseEventHandler(this.DragForm_MouseDown);
            }
        }
        [DllImport("user32.dll")]
        public static extern int SendMessage(IntPtr a, int msg, int wParam, int lParam);
        [DllImport("user32.dll")]
        public static extern bool ReleaseCapture();

        private void DragForm_MouseDown(object sender, MouseEventArgs e)
        {
            bool flag = e.Button == MouseButtons.Left;
            if(flag)
            {
                DragControl.ReleaseCapture();
                DragControl.SendMessage(this.SelectControl.FindForm().Handle, 161, 2, 0);

            }
        }
    }
}

5. 다시빌드한다. 

 

6. 도구상자에 DragControl이 생성되어 있다. 이것을 폼으로 드래그 한다. 

 

7. dragControl1 속성의 SelectControl 에서 panel를 지정한다. 

 

C# 윈폼 Form(폼) 둥글게 타원으로 만드는 방법

 

1. 먼저 폼 한개 만들고 FormBorderStyle를 None으로 설정한다. 

 

2. 클래스 파일 만들어서 다음과 같이 코딩한다. 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Monitor0._2.UI_Forms
{
    class EllipseControl : Component
    {
        [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
        private static extern IntPtr CreateRoundRectRgn
            (
            int nLeftRect,
            int nTopRect,
            int nRightRect,
            int nBottomRect,
            int nWidthEllipse,
            int nHeightEllipse

            );
        private Control _cntrl;
        private int _CornerRadius = 30;

        public Control TargetControl
        {
            get { return _cntrl; }
            set
            {
                _cntrl = value;
                _cntrl.SizeChanged += (sender, eventArgs) => 
                _cntrl.Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, _cntrl.Width, _cntrl.Height, _CornerRadius, _CornerRadius));
                
            }
        }

        public int CornerRadius
        {
            get { return _CornerRadius; }
            set
            {
                _CornerRadius = value;
                if(_cntrl != null)
                    _cntrl.Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, _cntrl.Width, _cntrl.Height, _CornerRadius, _CornerRadius));
            }
        }

    }
}

3. 그리고 ReBuild(다시빌드) 누르면 도구상자에 EllipseControl이 들어온다. 

 

4. EllipseControl를 폼으로 드래그앤드롭한다. 

 

5. ellipseControl1 속성에서 TargetControl에서 해당 폼을 지정하고 CornerRadius를 설정한다. 그럼 모서리가 둥글둥글해진다. 

C# - Creating an Ellipse Tool in WinForm App

'기타 ETC > C#' 카테고리의 다른 글

C# 그라디언트 판넬 컨트롤 만들기  (0) 2020.03.24
C# DragControl 만들기  (0) 2020.03.24
Form Drag  (0) 2020.03.19
C# 버튼에 다양한 아이콘 넣을수 있는 방법  (0) 2020.03.19
c# 실시간 라인 차트(그래프) 만들기  (0) 2020.02.18

C#에서 Formboardstyle을 None으로 했을때 폼을 드래그(Drag)를 못하게 된다. 그때 이 코드를 삽입하면 폼보더스타일이 논으로 되어있어도 폼을 잡고 움직일수 있게 된다. 

 

using System.Runtime.InteropServices;

[DllImport("user32.DLL",EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
[DllImport("user32.DLL",EntryPoint="SendMessage")]
private extern static void SendMessage(System.IntPtr hwnd, int wmsg, int wparam, int lparam);


private void ...panel or form 속성(번개표시): MoseDown ...  

ReleaseCapture();
SendMessage(this.Handle, 0x112,0xf012,0);

+ Recent posts