GDI+学习记录(10)- 影线画刷HatchBrush

本文介绍如何利用影线画刷在图形界面中实现多种风格的复杂矩形填充,包括设置画刷样式、颜色以及进行矩形区域的绘制与布局,通过实例演示了如何使用不同类型的影线画刷创建出丰富的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

影线画刷(HatchBrush)的基本使用:

 private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.Clear(Color.White);

            //构建第一种影线画刷
            HatchBrush hb = new HatchBrush(HatchStyle.Vertical, Color.Red, Color.White);
            g.FillRectangle(hb, new Rectangle(10, 10, 200, 100));

            //构建第二种画刷
            HatchBrush hb2 = new HatchBrush(HatchStyle.Horizontal, Color.Red, Color.LightGray);
            g.FillRectangle(hb2, new Rectangle(250, 10, 200, 100));

            //构建第三种画刷
            HatchBrush hb3 = new HatchBrush(HatchStyle.BackwardDiagonal, Color.Green, Color.LightYellow);
            g.FillRectangle(hb3, new Rectangle(10, 150, 200, 100));

            //构建第四种画刷
            HatchBrush hb4 = new HatchBrush(HatchStyle.ForwardDiagonal, Color.Black, Color.Red);
            g.FillRectangle(hb4, new Rectangle(250, 150, 200, 100));

            //释放资源
            hb.Dispose();
            hb2.Dispose();
            hb3.Dispose();
            hb4.Dispose();
        }

 

效果图:

 

 


 

列举出所有风格的影线画刷:
 

 Graphics g = e.Graphics;
            g.Clear(Color.White);

            //设置画刷的前景色为黑色,背景色为白色
            Color foreColor = Color.Black;
            Color backColor = Color.White;

            //定义填充区域矩形的宽度和高度
            int WIDTH = 140;
            int HEIGHT = 40;

            //定义输出文本信息
            SolidBrush redBrush = new SolidBrush(Color.Red);
            Font myfont = new Font("Arial",10);

            //column_count 表明在每一行能够绘制矩形的个数
            int column_count = this.Width / WIDTH;
            int rol = 0;
            int column = 0;

            //在当前窗口使用所有的影线画刷风格填充矩形
            Pen p = new Pen(Color.Green,1);
            foreach (HatchStyle style in Enum.GetValues(typeof(HatchStyle)))
            {
                //如果一行已经绘制完毕则换行
                if(rol > column_count - 1)
                {
                    column += 2;
                    rol = 0;
                }

                //创建临时画刷
                HatchBrush tempBrush = new HatchBrush(style,foreColor,backColor);
                
                //填充矩形:设置宽度为 WIDTH - 20 的目的为让矩形之间留出间隔
                g.FillRectangle(tempBrush,rol*WIDTH,column*HEIGHT,WIDTH -20,HEIGHT);
                //绘制矩形边框
                g.DrawRectangle(p, rol * WIDTH, column * HEIGHT, WIDTH - 20, HEIGHT);

                //显示每种画刷的风格
                //计算文本输出区域
                Rectangle layoutRect = new Rectangle(rol*WIDTH,(column-1)*HEIGHT,WIDTH,HEIGHT);
                StringFormat format = new StringFormat();
                //设置文本输出格式:水平、垂直居中
                format.Alignment = StringAlignment.Near;
                format.LineAlignment = StringAlignment.Center;
                //在矩形区域输出枚举风格名称
                g.DrawString(tempBrush.HatchStyle.ToString(),myfont,redBrush,layoutRect,format);

                rol += 1;


效果图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值