VisualBrush派生于TileBrush,TileBrush可以用来重复填充目标区域,
-
若要使用图像进行绘制,请使用 ImageBrush。
-
若要通过绘图绘制,请使用 DrawingBrush。
-
若要通过 Visual 进行绘制,请使用 VisualBrush。
一幅图案填充到目标区域,分别有以下两步骤:
1、从画刷的内容投射到一个小面片(Tile);
2、把小面片投射到目标区域;
注:Tile的牛津词典翻译:a flat, usually square, piece of baked clay , carpet or other material that is used in rows for covering walls and floors (贴墙或铺地用的)瓷砖,地砖,小方地毯,片状材料
ImageBrush通过ImageSource属性指定画刷的内容;
DrawingBrush通过Drawing属性指定画刷的内容;
VisualBrush通过Visual属性指定画刷的内容;
TileBrush有如下属性,用来指定画刷内容如何映射到小面片(Tile)中。
1、Stretch属性,该属性控制如何将TileBrush的内容拉伸以填充基本图块。 Stretch属性接受以下值,通过定义Stretch枚举:
-
None:画笔的内容未拉伸以填充磁贴。
-
Fill:画笔的内容进行缩放以适合图块。 由于内容的高度和宽度独立进行缩放,因此内容的原始纵横比可能不会保留。 也就是说,为了完全填充输出图块,画笔的内容可能会弯曲。
-
Uniform:缩放画笔的内容,使其完全符合该磁贴。 内容的纵横比会保留。
-
UniformToFill:缩放画笔的内容,使其在保留内容的原始纵横比的同时完全填充输出区域。
2、Viewbox属性,指定映射到小面片中的画刷内容的位置和尺寸。 默认值为矩形 (Rect),其 TopLeft 为 (0,0),Width 和 Height 为 1,默认使用相对坐标ViewboxUnits: RelativeToBoundingBox,表示将画刷的全部内容映射到小面片上,如果viewbox为(0,0,0.5,0.5),则表示左上角1/4部分映射到小面片上。
3、Viewport属性,该属性可以指定小面片映射到目标区域的哪一个部分,并ViewportUnits属性确定是否Viewport使用绝对或相对坐标指定。 如果坐标是相对坐标,则它们相对于输出区域的大小。 点 (0,0) 表示输出区域的左上角,(1,1) 表示输出区域的右下角。 若要指定的Viewport属性使用绝对坐标,设置ViewportUnits属性设置为Absolute。
4、TileMode属性,枚举值,该属性指定小面片 如何填充目标区域