Windows Phone 7, условный прямоугольник Возможно ли использовать новый ImageSource? - PullRequest
4 голосов
/ 14 июня 2011

Итак, у меня, казалось бы, простой вопрос:

Как мне написать код «если rectangle.fill равен X, заменить заливку на это конкретное изображение» в C #?Вот мой прямоугольник в XAML:

<Rectangle Height="auto" Width="auto" x:Name="Honey" ManipulationStarted="Honey_Started">
                    <Rectangle.Fill>
                        <ImageBrush ImageSource="image100.jpg" />
                    </Rectangle.Fill>
                </Rectangle>

Это было просто, но как будет выглядеть код позади?Следующий пример явно неверен, но я просто включил его, чтобы, надеюсь, показать, чего я хочу достичь.

private void Honey_Started(object sender, ManipulationStartedEventArgs e)
    {

        if (Honey.Fill == image100.jpg)
        {
            Honey.Fill = 900image.jpg;
        }
    }

1 Ответ

3 голосов
/ 14 июня 2011

Вместо проверки имени файла Fill, вы можете изменить свойство Tag Rectangle (или создать свое собственное UserControl). Тогда, например, вы можете сделать это:

<Rectangle Height="auto" Width="auto" x:Name="Honey" ManipulationStarted="Honey_Started" Tag="image1">
       <Rectangle.Fill>
             <ImageBrush ImageSource="image100.jpg" />
       </Rectangle.Fill>
</Rectangle>

Я добавил Tag="image1" в качестве атрибута в Rectangle. Затем вы можете получить доступ к этому в коде и проверить.

private void Honey_Started(object sender, ManipulationStartedEventArgs e)
    {

        if (Honey.Tag.ToString() == "image1")
        {
            ImageBrush ib = new ImageBrush();
            BitmapImage bImage = new BitmapImage(new Uri("900image.jpg",UriKind.Relative));
            ib.ImageSource = bImage;
            Honey.Tag = "900image.jpg";
            Honey.Fill = ib;
        }
    }

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

Альтернативным методом может быть сохранение двух ImageBrushes в виде переменной уровня класса и использование их для сравнения значения.

BitmapImage biImage100 = new BitmapImage(new Uri("/Jar/image100.jpg",UriKind.Relative));
ImageBrush ibImage100 = new ImageBrush() { ImageSource = biImage100 };
ImageBrush ib900image = new ImageBrush() { /*assign the 900image.jpg image*/ };

     private void Honey_Started(object sender, ManipulationStartedEventArgs e)
     {

           if (Honey.Fill == ibImage100)
           {
                Honey.Fill = ib900image;
           }
     } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...