为要处理的panel添加绘画事件,代码写在panel的Paint事件中:

private void panel1_Paint(object sender, PaintEventArgs e)
        {

//(new 一个矩形,范围为panel的上半部分)

Rectangle rt1 = new Rectangle(0, 0, panel1.Width, (panel1.Height/2));

//(new一个渐变笔刷,渐变范围为上面新建的矩形,即panel的上半部分,渐变色从白色到蓝色,渐变角度LinearGradientMode.Vertical为垂直渐变)
            LinearGradientBrush br = new LinearGradientBrush(rt1, Color.White, Color.Blue,   LinearGradientMode.Vertical);
            Graphics g = e.Graphics;//为控件创建Graphics
            g.FillRectangle(br, rt1);//填充矩形

//(下面同上面的操作,渐变panel的下半部分)
            LinearGradientBrush br2 = new LinearGradientBrush(rt1, Color.Blue, Color.White, LinearGradientMode.Vertical);
            Rectangle rt2 = new Rectangle(0,(panel1.Height/2), panel1.Width, panel1.Height/2);
            g.FillRectangle(br2, rt2);

//实现圆角形状的panel
            List list = new List();//建立点集合list
            int width = this.panel1.Width;
            int height = this.panel1.Height;
            //panel左上的点
            list.Add(new Point(0, 4));
            list.Add(new Point(1, 4));
            list.Add(new Point(1, 3));
            list.Add(new Point(2, 2));
            list.Add(new Point(3, 1));
            list.Add(new Point(4, 1));
            list.Add(new Point(4, 0));
            //panel右上的点
            list.Add(new Point(width - 4, 0));
            list.Add(new Point(width - 4, 1));
            list.Add(new Point(width - 3, 1));
            list.Add(new Point(width - 2, 2));
            list.Add(new Point(width - 1, 3));
            list.Add(new Point(width - 1, 4));
            list.Add(new Point(width - 0, 4));
            //panel右下角的点
            list.Add(new Point(width - 0, height - 4));
            list.Add(new Point(width - 1, height - 4));
            list.Add(new Point(width - 1, height - 3));
            list.Add(new Point(width - 2, height - 2));
            list.Add(new Point(width - 3, height - 1));
            list.Add(new Point(width - 4, height - 1));
            list.Add(new Point(width - 4, height - 0));
            //panel左下角的点
            list.Add(new Point(4, height - 0));
            list.Add(new Point(4, height - 1));
            list.Add(new Point(3, height - 1));
            list.Add(new Point(2, height - 2));
            list.Add(new Point(1, height - 3));
            list.Add(new Point(1, height - 4));
            list.Add(new Point(0, height - 4));
            Point[] points = list.ToArray();//将以上圆角形状的点集合转换成点数组
            GraphicsPath shape = new GraphicsPath();//新建绘图路径对象
            shape.AddPolygon(points);将路径转换为多边形
            //将窗体的显示区域设为GraphicsPath的实例
            this.panel1.Region = new System.Drawing.Region(shape);

}

C#GDI画立体渐变圆角panel相关推荐

  1. [html] 请使用canvas画一个渐变的长方形

    [html] 请使用canvas画一个渐变的长方形 // 普通canvas绘图工具类// umd适配多种引入方式 (function(root, factory) {if (typeof define ...

  2. 什么?你连个三色渐变圆角按钮都需要UI切图?

    废话不多说,先上效果图: 该效果其实由三部分组成: 渐变 圆角 文本 渐变 关于渐变,估计大家都不会陌生,以往都是使用gradient进行制作: shape_gradient.xml <?xml ...

  3. ai文字渐变_AI文字教程,用AI制作立体渐变环绕文字

    @野鹿志: 本篇教程通过Ai制作立体渐变环绕文字,类似的教程之前有介绍过,本篇详解说一下3D绕转的一些其他细节,用实例来进一步了解3D绕转功能,步骤很详细,同学们可以根据步骤做出这种形式的渐变环绕文字 ...

  4. html圆角矩形的渐变色,canvas圆角矩形 PS制作渐变圆角矩形: 方法一:

    用canvas画只有一个角是圆角的矩形,能画出来么? CSS布局HTML小编今天和大家分享各位大侠指点, 找到方法了float[] radii={12f,12f,0f,0f,0f,0f,0f,0f}; ...

  5. C#用GDI画任意形状的form

    C#用GDI画任意形状的form代码:代码放在窗体Paint事件中: List list = new List();//首先构构造好窗体的边缘的点 list.Add(new Point(0, 4)); ...

  6. opencv入手小训——画立体图形

    opencv入手小训--画立体图形 项目要求 用opencv程在空图上(背景为0)上画出立方体并把一张图片分别紧贴. 项目代码 #include "opencv2/core.hpp" ...

  7. 如何在visio中画立体图形

    最近写论文的时候要画立体结构图,起初没在visio中找到立体图像,问了同门,他和我说一笔一笔画,我不信!!! 最后终于找到了 ------------------------------ 0x00 打 ...

  8. cad怎么画立体图形教学_CAD怎么画立体图,手把手教你画三维图形

    AutoCAD是一款非常好用的软件,大部分的小伙伴都是用CAD来画二维图,实际上,这个软件还可以用来画立体图形,也就是三维图形,今天小编通过实例教大家如何画一个三维图形. 今天的实例是教大家画一个牟合 ...

  9. Android Paint 绘制空心渐变圆角矩形

    Android Paint 绘制空心渐变圆角矩形 在onDraw()中使用Paint绘制空心的圆角矩形 代码 @Overrideprotected void onDraw(Canvas canvas) ...

最新文章

  1. 分布式架构的对比-EMC VMAX
  2. Python学习-03(集合,文件,编码)
  3. 一个简单的C#获取Session、设置Session类文件
  4. Python 类的属性和实例属性 Python 的动态语言
  5. css blink不闪烁_使它闪烁HTML教程–如何使用Blink标签以及代码示例
  6. Java、Node.js、PHP还是.Net? 无论你选谁,我都能教你一招!
  7. 大数据如何应用于食品追溯管理
  8. 使用机器学习算法打造一个简单的“微博指数”
  9. switch语句的ns图怎么画_switch语句流程图 c语言中swtich怎么画流程图
  10. linux c++ toolchain 配置文件,一步一步建立基于ARM+Linux的cross toolchain
  11. iCloud数据存储
  12. Qt 可拖拽 大小可调 方框
  13. Java word转pdf Linux/windows跨平台 格式完美(利用命令行调用libreoffice)
  14. TP房产系统_Tphouse_tpfangchan 1.2.7升级开源版多站点多城市房产系统源码带小程序
  15. 铁路 计算机系统维护,成都市计算机学校计算机系统维护就业前景
  16. Uni-app 中使用 .ttf 字体图标
  17. 微信24小时客服热线电话/如何转到人工服务办理
  18. coreldraw插件编写
  19. 机器学习与知识发现电子书_2019年,5本关于机器学习的免费电子书你应该知道(有资源)...
  20. 阿布扎比将于2023年5月举办年度投资会议

热门文章

  1. 【完全开源】博客园客户端UWP版(上篇)
  2. Oracle官方并发教程之不可变对象
  3. 关于APKsmail中加入代码报错All register args must fit in 4 bits
  4. fedora下java环境配置
  5. 复杂度及圈复杂介绍介绍
  6. axios使用post请求服务端不能获取参数的解决方法
  7. Ubuntu 15.10开机启动到命令行模式-转
  8. [Python] L1-034. 点赞 团体程序设计天梯赛GPLT
  9. Eclipse 提示 The given project is not a virtual component project
  10. java连接远程带有密码的mongodb数据库