导航:  GdiPlus Classes > GdiPlus Classes > CGpBrush Class > CGpLinearGradientBrush Class > LinearGradientBrush Object >

SetBlend

上一页返回章节概述下一页

描述

 

设置混合因子和这个线性渐变画笔的混合位置来创建自定义混合.

 

C++ Syntax

 

Status SetBlend(

[in]  const REAL *blendFactors,

[in]  const REAL *blendPositions,

[in]  INT count

);

 

FreeBASIC 语法

 

FUNCTION SetBlend ( _

   BYVAL blendFactors AS SINGLE PTR, _

   BYVAL blendPositions AS SINGLE PTR, _

   BYVAL count AS LONG _

) AS GpStatus

 

参数

 

blendFactors

 

[in]指向精度的数字,指定简单的混合因子数组.每个数字数组中指定的结束颜色的百分比,应该从0.0通过1.0.范围

 

blendPositions

 

[in]指向精度的数字,指定简单的混合位置的数组.阵列中的每个数字表示开始和结束的边界和边界之间的距离的百分比是从哪里0.0通过1.0, 0.0表明梯度和1.0起始边界表示结束的边界范围.至少要有两个指定位置:第一的位置,这始终是0.0f,和最后的位置,这始终是1.0f.否则,该行为是未定义的.0.0和1.0之间的混合位置指示线,平行的边界线,这是一个一定的分数,距离开始到结束边界的边界.例如,对0.7混合位置指示线,从开始到结束的边界,边界的距离百分之70.在平行于边界线的线条上,颜色是恒定的.

 

count

 

[in]整数,指定在blendFactors数组元素个数.这是因为在blendPositions数组的元素个数.在给定数组索引中的混合因子对应于同一数组索引的混合位置.

 

返回值

 

如果该方法成功,则返回Ok,这是对Status枚举元素.

如果这个方法失败,它返回一个枚举的其他元素的Status.

 

备注

 

一个LinearGradientBrush对象有两个界限.当你用线性渐变笔刷填充一个区域时,颜色从你的起始边界移动到结束边界.默认情况下,色彩的距离成线性关系,但可以通过调用LinearGradientBrush.SetBlend方法自定义颜色和距离之间的关系.

 

引用文件

 

CGpBrush.inc (include CGdiPlus.inc)

 

示例

 

' ========================================================================================

' The following example creates a linear gradient brush, sets a custom blend, and uses the

' brush to fill a rectangle.

' ========================================================================================

SUB Example_SetBlend (BYVAL hdc AS HDC)

 

  ' // Create a graphics object from the window device context

  DIM graphics AS CGpGraphics = hdc

  ' // Get the DPI scaling ratio

  DIM rxRatio AS SINGLE = graphics.GetDpiX / 96

  DIM ryRatio AS SINGLE = graphics.GetDpiY / 96

  ' // Set the scale transform

  graphics.ScaleTransform(rxRatio, ryRatio)

 

  DIM factors(0 TO 3) AS SINGLE = {0.0, 0.4, 0.6, 1.0}

  DIM positions(0 TO 3) AS SINGLE = {0.0, 0.2, 0.8, 1.0}

  DIM rcf AS GpRectF = GDIP_RECTF(0, 0, 100, 50)

 

  DIM linGrBrush AS CGpLinearGradientBrush = CGpLinearGradientBrush(@rcf, GDIP_ARGB(255, 255, 0, 0), _

      GDIP_ARGB(255, 0, 0, 255), LinearGradientModeHorizontal)

 

  linGrBrush.SetBlend(@factors(0), @positions(0), 4)

  graphics.FillRectangle(@linGrBrush, @rcf)

 

END SUB

' ========================================================================================