C# 常用类库 GDI+(学习笔记11)

GDI+ (graphics device interface plus) 图形设备接口,用于在屏幕显示或打印图形和文字。

1.基本概念

画图需要画板,画笔(勾勒轮廓),画刷(填充内部),以及技巧(控制画笔去勾勒)。

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        Graphics board;// 画板 
        Pen pen; // 画笔
        SolidBrush brush;// 画刷

    }

2.绘制直线

img

        private void BtnDrowLine_Click(object sender, EventArgs e)
        {
            // 在窗体上创建画板
            board = this.CreateGraphics();
            // 创建画笔
            p = new Pen(Color.Blue, 2);
            // 创建画刷
            brush = new SolidBrush(Color.Red);
            // 设置画刷
            p.Brush = brush;
            //  画线段
            board.DrawLine(p, 20, 20, 150, 150);
            // 释放资源
            p.Dispose();
            board.Dispose();
        }

3.在Pannel上绘制直线

img

        private void BtnDrowLine_Click(object sender, EventArgs e)
        {
            // 在pannel上创建画板
            board = panel1.CreateGraphics();
            // 创建画笔
            p = new Pen(Color.Blue, 2);
            // 创建画刷
            brush = new SolidBrush(Color.Red);
            // 设置画刷
            p.Brush = brush;
            //  画线段
            board.DrawLine(p, 20, 20, 150, 150);
            // 释放资源
            p.Dispose();
            board.Dispose();
        }

4.绘制矩形

img

        private void btnDrawRect_Click(object sender, EventArgs e)
        {
            // 在pannel上创建画板
            board = panel1.CreateGraphics();
            // 创建画笔
            p = new Pen(Color.Blue, 2);
            // 创建画刷
            brush = new SolidBrush(Color.Red);
            // 设置画刷
            p.Brush = brush;
            //  画矩形
            Rectangle rectangle = new Rectangle();
            rectangle.X = 30;
            rectangle.Y = 30;
            rectangle.Width = 100;
            rectangle.Height = 60;
            board.DrawRectangle(p, rectangle);
            // 释放资源
            p.Dispose();
            board.Dispose();
        }

5.填充图形

填充图形

        private void BtnFillRect_Click(object sender, EventArgs e)
        {
            // 矩形1
            Rectangle rectangle1 = new Rectangle(50, 50, 200, 100);
            // 矩形2
            Rectangle rectangle2 = new Rectangle(70, 20, 100, 200);
            // 创建两个矩形
            board = panel1.CreateGraphics();// 画板
            board.DrawRectangle(Pens.Black, rectangle1);
            board.DrawRectangle(Pens.Red, rectangle2);
            // 矩形1和矩形2是否有交集
            if (rectangle1.IntersectsWith(rectangle2))
            {
                // 与矩形2的交集部分赋值给矩形1
                rectangle1.Intersect(rectangle2);
                // 新的矩形1的各种属性均不能为0(x,y,width,height)
                if (!rectangle1.IsEmpty)
                {
                    // 用绿色画笔填充矩形1
                    board.FillRectangle(Brushes.Green, rectangle1);
                }
            }
        }

6.圆

img

        private void BtnDrawEllipse_Click(object sender, EventArgs e)
        {
            board = panel1.CreateGraphics();
            p = new Pen(Color.Blue, 1);
            RectangleF rect = new RectangleF()
            {
                X = 100,// 左上角横坐标
                Y = 100,// 左上角纵坐标
                Width = 100,// 宽度
                Height = 100 // 高度
            };
            board.DrawEllipse(p, rect);
        }

7.文本

img

        private void BtnDrawText_Click(object sender, EventArgs e)
        {
            board = panel1.CreateGraphics();
            string s = "我爱你,中国!";
            PointF point = new PointF
            {
                X = 60,
                Y = 100
            };
            board.DrawString(s, font, Brushes.Red, point);
        }
posted @ 2025-11-23 09:12  huiy_小溪  阅读(6)  评论(0)    收藏  举报