SSRS HSL颜色表达

时间:2016-08-26 16:44:01

标签: sql-server reporting-services

是否可以使用SQL Server Reporting Services报告中的HSL值设置文本框字体颜色?是否可以使用将HSL值转换为SSRS支持的HTML颜色代码的表达式? For example hsl(77, 19%, 76%) equals #c7cdb6

3 个答案:

答案 0 :(得分:1)

转到“报告属性”>编码并添加以下自定义代码:

Public Function hsl2htmlColor(ByVal h as Double, ByVal s as Double, ByVal l as Double) as string
    dim r as Double
    dim g as Double
    dim b as Double

    If s = 0 Then
        r = g = b = l
    Else
        dim q as Double

        If l < 0.5 Then 
            q = l * (1 + s) 
        Else
            q = l + s - l * s 
        End If

        dim p as Double = 2 * l - q
        r = hue2rgb(p, q, h + 1/3)
        g = hue2rgb(p, q, h)
        b = hue2rgb(p, q, h - 1/3)
    End If

    return "#" & right("00" & Hex(r * 255) , 2) & right("00" & Hex(g * 255) , 2) & right("00" & Hex(b * 255) , 2)
End Function

Public Function hue2rgb(ByVal p as Double, ByVal q as Double, ByVal t as Double) as Double
    If t < 0    Then t += 1
    If t > 1    Then t -= 1
    If t < 1/6  Then return p + (q - p) * 6 * t
    If t < 1/2  Then return q
    If t < 2/3  Then return p + (q - p) * (2/3 - t) * 6
    return p
End Function

(示例)转到文本框属性并将以下表达式添加到Font&gt;颜色。每个参数的比例从0到1。

=Code.hsl2htmlColor(0.268 , 0.389 , 0.476)

答案 1 :(得分:0)

使用HSL坐标无法在SSRS中指定颜色,但您可以创建自定义函数来获取RGB值并使用SSRS RGB函数来获取颜色。

this链接中,有一种JavaScript算法可将HSL转换为RGG。我将该代码转换为VB函数,该函数返回包含RGB值的数组[R,G,B]对象,然后只需将HSL值作为args调用该函数。

=RGB(Code.HSL2RGB(h,s,l)[0],Code.HSL2RGB(h,s,l)[1],Code.HSL2RGB(h,s,l)[2])

如果您不知道如何创建自定义功能,请选中this

如果有帮助,请告诉我。

答案 2 :(得分:0)

如果HSB满足您的需求,那就不确定了。

Right Click>Textbox Properties>Fill>Fill Color>More Color

enter image description here