如何防止Visual Brush拉伸其内容

时间:2009-10-01 15:17:26

标签: wpf

在我的项目中,我想在自定义控件的一侧显示一个小徽标。因为我没有画布,所以我认为可能使用Visual Brush将徽标放在背景中是个好主意。

<VisualBrush>
    <VisualBrush.Visual>
        <Rectangle Width="200" Height="200" Fill="Red" />
    </VisualBrush.Visual>                
</VisualBrush>

但我现在使用的矩形不是200x200。它需要完整的可用空间。那不是我想要的。我也试过一个Viewbox并设置了stretch属性,但结果是一样的,因为最后我不需要一个简单的Rectangle,而是一个带有很多路径对象作为子项的画布。 Viewbox仅支持一个孩子。

有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:10)

您需要在TileMode上设置StretchAlignmentXAlignmentYVisualBrush属性:

<VisualBrush TileMode="None" Stretch="None" AlignmentX="Left" AlignmentY="Top">
    <VisualBrush.Visual>
        <Rectangle Height="200" Width="200" Fill="Red"></Rectangle> 
    </VisualBrush.Visual>
</VisualBrush>

答案 1 :(得分:0)

添加网格,并将此设置垂直对齐方式设置为“顶部”和“水平”对齐方式为 示例代码

  <VisualBrush x:Key="myVisual">
        <VisualBrush.Visual>
            <Grid>
                <Rectangle Height="200" Width="200" Fill="Red" HorizontalAlignment="Right"  VerticalAlignment="Top" ></Rectangle> 
            </Grid>
        </VisualBrush.Visual>
    </VisualBrush>

答案 2 :(得分:0)

对我来说,我在VisualBrush上设置了以下属性,VisualBrush现在看起来与MediaElement完全相同:

Stretch="Uniform"