C# 矩形的Silverlight设置属性

C# 矩形的Silverlight设置属性,c#,silverlight,C#,Silverlight,我有一个长方形,看起来像这样 <Rectangle x:Name="rect" Width="76" Height="76" HorizontalAlignment="Left"> <Rectangle.Fill> <ImageBrush x:Name"image" ImageSource="Media/Tile_01.png"/> </Rectangle.Fill>

我有一个长方形,看起来像这样

<Rectangle x:Name="rect" 
           Width="76" Height="76"
           HorizontalAlignment="Left">
    <Rectangle.Fill>
        <ImageBrush x:Name"image" ImageSource="Media/Tile_01.png"/>
    </Rectangle.Fill>
    <Rectangle.RenderTransform>
        <TranslateTransform x:Name="rectTranslateTransform" X="0" Y="0" />
    </Rectangle.RenderTransform>
</Rectangle>

如何在.cs文件中设置ImageBrush的ImageSource属性?
有没有办法获取rect的子对象?

ImageBrush实际上并不是矩形的子对象,就像按钮可以是网格的子对象一样。
矩形.Fill
元素正在使用属性元素语法,请参见以下链接:

因此,可以从XAML中看出矩形具有Fill属性。查看
Shape.Fill
的文档,您可以看到这是刷子类型:

因此,您必须将其投射到ImageBrush。完整的代码是:

Brush fill = rect.Fill;
ImageBrush imageBrush = fill as ImageBrush;

// set the source
imageBrush.Source = new BitmapImage(new Uri("/MyNameSpace;images/someimage.png", UriKind.Relative));
这项工作:-

image.ImageSource = new BitmapImage(new Uri("/Media/Tile_02.png", UriKind.Relative));

有些事情要考虑,源PNG已经是76x76了吗?如果不考虑在该分辨率下存储一个集合,则缩放大型图像仍然需要原始的大图像保持在MEM中,并且这可能是昂贵的。

如果将图像重新用于平铺,则最好构建
ImageBrush
字典,并将其直接指定给矩形的
Fill
属性

质疑为什么要使用矩形也是合理的?为什么不直接使用
图像
控件