Атрибут настройки Silverlight Rectangle - PullRequest
1 голос
/ 02 февраля 2011

У меня есть прямоугольник, который выглядит следующим образом

<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>

Как мне установить атрибут ImageSource ImageBrush в файле .cs? Есть ли способ получить ребенка от прямой?

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Это работает: -

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

Что нужно учитывать, исходные pngs уже 76x76?Если не рассматривать возможность сохранения набора с таким разрешением, для уменьшения больших изображений все равно требуется сохранение исходного большого изображения в памяти, что может быть дорогостоящим.

Если вы повторно используете изображения для плиток, это может бытьВам лучше создать словарь ImageBrush и назначить его непосредственно свойству прямоугольников Fill.

Также может быть разумно задать вопрос, почему вы вообще используете прямоугольник?Почему бы не прямой Image контроль?

1 голос
/ 02 февраля 2011

ImageBrush на самом деле не является дочерним элементом Rectangle в том смысле, что Button может быть дочерним элементом Grid. Элемент Rectangle.Fill использует синтаксис элемента свойства, см. Следующую ссылку:

http://msdn.microsoft.com/en-us/library/bb412392.aspx#settingproperties

Следовательно, из XAML вы можете сказать, что Rectangle имеет свойство Fill. Посмотрев документацию на Shape.Fill, вы увидите, что это тип Brush:

http://msdn.microsoft.com/en-us/library/system.windows.shapes.shape.fill.aspx

Поэтому вам придется привести его к 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...