基于权限控制需求可能想在Power BI页面添加水印。静态水印使用度量值生成一个卡片图即可,本文讲解动态水印的制作及使用。
- 动态水印演示
顶部水平水印如下图所示,淡灰色的wujunmin在向右移动:
倾斜重复水印如下图所示:
原地转圈水印,如下图左上角:
转大圈水印,圆圈其实不需要,只是为了辅助让大家看到行动轨迹:
神出鬼没水印,看似随机的在移动:
2. 制作水印
水印使用度量值生成,原理是SVG的动画标签,将水印的文字替换为自己需要的,可以重复使用。
代码语言:javascript复制水印_顶部水平 =
"<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 1280 20'>
<text x='0' y='20' font-size='20' fill='Grey' fill-opacity='0.4' text-anchor='middle'>wujunmin
<animate attributeName='x' from='0' by='1280' begin='0s' dur='30s' repeatCount='indefinite' />
</text>
</svg> "
viewbox设置的屏幕显示宽度高度,可依据自己的画布尺寸灵活调整。
代码语言:javascript复制水印_重复倾斜 =
VAR label = "wujunmin" //水印内容
VAR Label_Count = 10 //水印行数
VAR t =
GENERATESERIES ( 1, Label_Count )
VAR t_text =
ADDCOLUMNS (
t,
"tspan",
"<tspan x='0' y='" & [Value] * 5 & "'>" & label & "
<animate attributeName='x' from='"
& IF ( MOD ( [Value], 2 ) = 0, 0, Label_Count * 5 ) & "' by='"
& IF (
MOD ( [Value], 2 ) = 0,
SQRT ( 2 ) * Label_Count * 5,
-1 * SQRT ( 2 ) * Label_Count * 5
) & "' begin='"
& RANDBETWEEN ( 0, 10 ) & "s' dur='10s' repeatCount='indefinite' />
</tspan>"
)
VAR SVG =
"<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 " & Label_Count * 5 & " " & Label_Count * 5 & "'>
<g transform='rotate(-45," & Label_Count * 5 & "," & Label_Count * 5 & ")'>
<text font-size='5' fill='Grey' fill-opacity='0.2' text-anchor='middle' dominant-baseline='middle'>"
& CONCATENATEX ( t_text, [tspan] ) & "
</text>
</g>
</svg> "
RETURN
SVG
代码语言:javascript复制水印_原地转圈 =
"<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 100 100'>
<text x='50' y='50' font-size='20' fill='Grey' fill-opacity='0.4' text-anchor='middle'>wujunmin
<animatetransform attributeName='transform' type='rotate' from='0 50 50' to='360 50 50' begin='0s' dur='30s' repeatCount='indefinite' />
</text>
</svg> "
代码语言:javascript复制水印_转大圈 =
"<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 100 100'>
<text x='0' y='0' font-size='5' fill='Grey' fill-opacity='0.4' text-anchor='middle'>
wujunmin
<animatemotion path='M0 50a50 50 0 1 0 100 0a50 50 0 1 0 -100 0z' begin='0s' dur='20s' repeatCount='indefinite' />
</text>
</svg> "
神出鬼没水印读者可以自定义移动路径,自定义的方式为:
搜索引擎搜索SVG在线编辑(功能都差不多),任意打开一个编辑器,如下操作:
记事本打开保存好的SVG文件,将里面的path内容复制到上方的水印-转大圈度量值,移动路径则重新规划成功。
3. 显示水印
显示上方度量值做好的水印有三种方式。第一种是使用HTML Content视觉对象,将以上度量值放入该视觉对象即可正常显示。
注意为避免对图表造成遮挡,需要将加载水印的HTML Content置于底层:
使用HTML Content的好处是可以和Power BI模型中的用户权限设置产生联动,且支持的动画形式相对较多。坏处是消耗一定的内存及硬盘。
第二种是将以上度量值的<SVG></SVG>部分保存成外部SVG文件,使用添加页面背景的方式导入Power BI:
这种SVG文件很小,只有几个KB,加载迅速,移动丝滑,但是支持的动画相对基础,也无法和模型产生联动。
第三种和第二种类似,针对单个图表添加水印,可以绘图区单独导入SVG文件: