• GDI+学习笔记(六)渐变画笔



    刷,顾名思义,它是一样的刷。提请设备,还记得常唱歌曲,"我是一个画家.." 好吧。跑题了。


    本系列博客希望尽可能简单的描写叙述每项功能,而不希望把每一个參数都介绍的详具体细,假设须要。请查阅msdn,本节讲述的渐变画刷,主要有两种。一种是叫线性画刷(LinearGradientBrush),另一种叫路径画刷(PathGradientBrush),我希望以一种尽可能简单的方式去描写叙述它。但能力有限,所以有什么意见,希望各位能帮忙提出,谢谢。


    (一)使用画刷

    上一节中。我们实际上实现了上中下三个面。然后全部的内容都会绘制上一种颜色或者一张图片。而绘制颜色事实上本质上就是一种特殊的画刷,而这里我们将使用更高级的画刷--渐变的画刷来代替它们。

    因此。我们本节的工作,就是要代替上一节中graphics.clear()的工作。其它的与上节内容没有不论什么差别。


    (二)线性画刷

    我们须要初始化一个线性画刷,代码例如以下:

    		LinearGradientBrush *lgb = new LinearGradientBrush(Point(0,0), Point(100,0),
    			Color::Blue, Color::Green);

    简单说明一下參数。前两个參数,是两个点,这两个点组成了方向向量,唯一标记了渐进的方向。

    后面两个參数,是两个颜色。指的是開始和结束的两个点的颜色。假设我们希望中间添加几组呢?我们能够设置插值,详细能够查阅GDI+的API函数:SetInterpolationColors。


    然后,我们填充一下Graphics就能够了,代码例如以下:

    bmpGraphics.FillRectangle(lgb, 0, 0, 100, 100);

    ok,看看效果:



    (三)路径画刷

    相对照线性画刷,路径画刷就略微复杂一点。它相同是一种渐进变化的画刷,但它是从一个闭合路径的中心点向路径中渐变的一种画刷。

    闭合路径的中心点默认是路径的几何中心,当然我们也能够通过SetCenterPoint来进行中心点的设置。

    既然如此,那么我们首先须要定义一个闭合路径。这里我们定义一个正方形

    		GraphicsPath *gp = new GraphicsPath;
    		Point p[] = {
    			Point(0,0),Point(100,0),Point(100,100),Point(0,100)
    		};
    		gp->AddLines(p, 4);

    然后,用这个正方形为路径渐进画刷初始化

    		PathGradientBrush *pgb = new PathGradientBrush(gp);

    这之后,我们还须要设置中心的颜色和四周的颜色。

    		pgb->SetCenterColor(Color::White);
    
    		Color surroundColors[] = {
    			Color::Red,
    			Color::Green,
    			Color::Blue,
    			Color::Yellow
    		};
    		int nCount = 4;
    		pgb->SetSurroundColors(surroundColors, &nCount);
    最后,填充路径

    bmpGraphics.FillPath(pgb, gp);

    至此,我们就完毕了渐进画刷的绘制,仅仅须要依照上节的内容。将其会知道hdc相应的graphics中就可以。看看效果:



    (四)在正方体上使用渐进画刷

    仅仅须要将上述内容会知道正方体上的三个面就可以,直接看看效果吧:



    (五)其它说明

    有非常多细节的操作。还须要详细使用中多多尝试,才干更熟练的使用。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    在 json4s 中自定义CustomSerializer
    【重点】2020年宝山区义务教育阶段学校校区范围与招生计划(小学)
    2019宝山区小升初对口地段表及对口初中片区划分
    2019上海市各区重点幼儿园、小学和中学排名(建议收藏)
    转:一千行MYSQL 笔记
    基于weixin-java-mp 做微信JS签名 invalid signature签名错误 官方说明
    转 : 深入解析Java锁机制
    微服务架构转型升级
    抽奖活动 mark
    抽奖 mark
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4729691.html
Copyright © 2020-2023  润新知