描述
从LinearGradientBrush对象和相应的混合位置混合因子.
C++ Syntax
Status GetBlend( [out] REAL *blendFactors, [out] REAL *blendPositions, [in] INT count ); |
FreeBASIC 语法
FUNCTION GetBlend ( _ BYVAL blendFactors AS SINGLE PTR, _ BYVAL blendPositions AS SINGLE PTR, _ BYVAL count AS LONG _ ) AS GpStatus |
参数
blendFactors
[out]数组指针接收混合因子.数组中的每个数表示结束颜色的百分比,从0.0通过1.0.范围
blendPositions
[out]数组指针接收混合位置.阵列中的每个数字表示开始和结束的边界和边界之间的距离的百分比是从哪里0.0通过1.0, 0.0表明梯度和1.0起始边界表示结束的边界范围.0.0和1.0之间的混合位置指示线,平行的边界线,这是一个一定的分数,距离开始到结束边界的边界.例如,对0.7混合位置指示线,从开始到结束的边界,边界的距离百分之70.在平行于边界线的线条上,颜色是恒定的.
count
[in]整数,指定要检索的混合因子数.调用一个对象的LinearGradientBrush.GetBlend LinearGradientBrush方法之前,调用同一LinearGradientBrush对象的LinearGradientBrush.GetBlendCount方法来确定当前的混合因子数.检索的混合位置的数目是相同的检索的混合因子的数目.
返回值
如果该方法成功,则返回Ok,这是对Status枚举元素.
如果这个方法失败,它返回一个枚举的其他元素的Status.
备注
一个LinearGradientBrush对象有两个平行的边界:一个开始和结束的边界边界.颜色与这两个边界中的每一个相关联.每个边界是一条直线,通过一个指定的点?起始边界通过起始点,结束边界通过结束点?并垂直于直线渐变刷的方向.线性渐变画笔的方向是由起始点和结束点定义的线.这条线,'定向线',可以是水平的,垂直的,或对角线.位于平行于边界的直线上的所有点都是相同的颜色.当你用直线渐变笔刷填充一个区域时,颜色沿着一条直线逐渐向下一条直线移动,从起始边界到结束边界沿着方向线移动.默认情况下,颜色的变化与距离的变化成正比,也就是说,起始边界和结束边界之间的一行百分之30的颜色是起始边界颜色和结束边界颜色之间的距离的百分之30.在开始和结束边界之外重复颜色模式.
你可以叫一个LinearGradientBrush对象自定义颜色和距离之间的关系LinearGradientBrush.SetBlend方法.例如,假设你设置混合位置{0, 0.5, 1 }你设置混合因素{0, 0.3, 1}.再线百分之50的距离开始和结束的边界之间的边界会有颜色,是起始颜色和结束颜色边界的边界之间的距离为百分之30.
引用文件
CGpBrush.inc (include CGdiPlus.inc)
示例
' ========================================================================================
' The following example creates a linear gradient brush, sets its blend, and uses the brush
' to fill a rectangle. The code then gets the blend. The blend factors and positions can
' then be inspected or used in some way.
' ========================================================================================
SUB Example_GetBlend (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)
DIM blendCount AS LONG = linGrBrush.GetBlendCount
DIM rgFactors(blendCount - 1) AS SINGLE
DIM rgPositions(blendCount - 1) AS SINGLE
linGrBrush.GetBlend(@rgFactors(0), @rgPositions(0), blendCount)
FOR j AS LONG = 0 TO blendCount - 1
' // Inspect or use the value in rgFactors(j)
' // Inspect or use the value in rgPositions(j)
OutputDebugString STR(rgFactors(j)) & STR(rgPositions(j))
NEXT
END SUB
' ========================================================================================