首页 >> 中医美容

基于的编程入门之画刷

中医美容  2021年09月06日  浏览:3 次

(四)渐变画刷

渐变画刷类似与实心画刷,因为它也是基于颜色的,与实心画刷不同的是,渐变画刷使用两种颜色,它的主要特点是,在使用过程中,一种颜色在一端,而另外一种颜色在另一端。在中间,两种颜色融合产生过渡或衰减的效果。

渐变画刷有两种:线性画刷和路径画刷

1、线性渐变画刷

线性渐变画刷在封闭的区域内的两端使用两种颜色,如左端和右端。

为了支持线性渐变画刷,.NET框架在名字空间System::Drawing::Drawing2D 中对LinearGradientBrush类进行了定义,为了规定填充图形的起点和终点,可以使用下面的构造函数:

public: LinearGradientBrush(Point point1, Point point2, Color color1, Color color2);

public: LinearGradientBrush(PointF point1, PointF point2, Color color1, Color color2);

第一个参数point1是绘制的起点,第三个参数color1是对应该点的颜色,第二个参数point2对应着绘制的终点,color2是该点的颜色。例子代码如下:

private: System::Void Form1_Paint(System::Object * sender,

System::Windows::Forms::PaintEventArgs * e)

{

using namespace System::Drawing::Drawing2D;

LinearGradientBrush *lgb = new LinearGradientBrush(Point(20, 20),

Point(450,20), Color::DarkGreen, Color::LightBlue);

e-Graphics-FillRectangle(lgb, 20, 20, 430, 180);

}

图十一、线性渐变画刷效果

默认情况下,渐变画刷按照水平渐变的方式填充图形,如果想让颜色按照不同的方向渐变,如垂直或对角线方向,可以使用下面的构造函数:

public: LinearGradientBrush(Rectangle rect, Color color1, Color color2,

LinearGradientMode factor);

public: LinearGradientBrush(RectangleF rect, Color color1, Color color2,

LinearGradientMode factor);

第一个参数rect是所要填充颜色的矩形,第二个参数是起点的颜色,第三个参数是终点的颜色,第四个参数factor用来决定颜色融合的方向。它可以取以下值:

Vertical:垂直方向渐变:

private: System::Void Form1_Paint(System::Object * sender,

System::Windows::Forms::PaintEventArgs * e)

{

using namespace System::Drawing::Drawing2D;

Rectangle rect(10, 10, 470, 300);

LinearGradientBrush *lgb = new LinearGradientBrush(rect,

Color::DarkRed,Color::White, LinearGradientMode::Vertical);

e-Graphics-FillRectangle(lgb, 10, 10, 450, 280);

}

图十二、代码运行效果图

Horizontal:水平渐变; BackwardDiagonal:反向对角线渐变; ForwardDiagonal:正向对角线渐变。

用来指定渐变方向的构造函数有局限性,它只有四个选项,如果需要,可以使用下面的构造函数来指定任意角度的渐变。

public: LinearGradientBrush(Rectangle rect, Color color1, Color color2, float angle);

public: LinearGradientBrush(RectangleF rect, Color color1, Color color2, float angle);

第一个参数rect指的是所要画颜色的区域,最后一个参数angle(按顺时针方向计算),定义了颜色融合的方向。参数color1是开始点的颜色,参数color2是终点的颜色。这里有个例子:

private: System::Void Form1_Paint(System::Object * sender,

System::Windows::Forms::PaintEventArgs * e)

{

using namespace System::Drawing::Drawing2D;

Rectangle rect(10, 10, 470, 300);

LinearGradientBrush *lgb = new LinearGradientBrush(rect,

Color::DarkRed, Color::White, -65.24F);

e-Graphics-FillRectangle(lgb, 10, 10, 450, 280);

稳。管坯价格弱稳 }

图十三、代码运行效果图

2、路径渐变画刷

第二种可用的渐变画刷就是路径渐变画刷,这种画刷用在路径上,来产生渐变效果。.NET 框架在awing2D名字空间中提供了 PathGradientBrush,这个类比有两个构造函数:

public: PathGradientBrush(Point points[]);

public: PathGradientBrush(PointF points[]);

传递给这个构造函数的参数是Point类型的数组,这里有一个例子:

private: System::Void Form1_Paint(System::Object * sender,

System::Windows::Forms::PaintEventArgs * e)

{

using namespace System::Drawing::Drawing2D;

Point ptGraph[] = { Point(10, 10),

Point(450, 10),

Point(450, 250),

Point(10, 250) };

PathGradientBrush *pgb = new PathGradientBrush(ptGraph);

e-Graphics-FillRectangle(pgb, 10, 10, 450, 280);

}

图十四、代码运行效果图

查看本文来源

上海前列腺炎哪家好
体质虚弱饮食调理有用吗
汕尾白癜风哪里治疗好
友情链接