Панорамы и массивы изображений - PullRequest
2 голосов
/ 06 июня 2011

Итак, у меня проблема с кодированием, с которой мне нужна помощь, и, проще говоря, я понятия не имею, что я делаю с этим. К вашему сведению, я не использую инструментарий со слушателями жестов.

У меня есть страница панорамы с 3 панорамами: BigImageCenter, BigImageLeft, BigImageRight.

В моем приложении куча изображений, которые будут загружены вместе с приложением. Цель на этой странице панорамы - установить прокрутку в нижней части страницы, чтобы отображать весь список изображений, поставляемых с приложением, в виде миниатюр, а верхнюю часть страницы - элементы панорамы, где, если вы Проведите пальцем влево или вправо, чтобы изображения методично продвигались (или возвращались назад, если щелкнуть влево) вниз по списку.

Кроме того, если вы нажмете на одну из миниатюр в нижнем окне прокрутки, он заменит текущее панорамное изображение на миниатюру. Если вы пролистаете влево или вправо на странице панорамы, вы получите в массиве это уменьшенное изображение -1 или +1.

Первое изображение, которое вы видите на странице, - это BigImageCenter.

Мне не нужно использовать 3 элемента панорамы, и, возможно, мне удастся обойтись только с 1. Однако при тестировании всего с 1, после изменения изображения, нажав на миниатюру и проведя панораму влево или вправо следующее изображение, которое должно быть загружено на экран, всегда является тем же изображением до того, как оно было изменено (имеет смысл, поскольку я не кодировал ни один массив для динамического изменения следующего изображения и т. д.).

Однако я не знаю, как сделать что-либо из следующего:

1) Создайте массив, в котором для первого изображения в элементе панорамы установлено значение X. 2) Скажите, щелкнул ли пользователь влево или вправо до -1 или +1 в массиве 3) Установите миниатюрное изображение, чтобы заменить текущее панорамное изображение при нажатии, а затем переместите массив в положение миниатюрного изображения.

Вот XAML как элемента управления панорамой, так и просмотрщика миниатюр:

<Grid x:Name="ControlPanel" Grid.Row="1" Margin="-8,-22,-49,90">
        <controls:Panorama Name="Image_Panorama" Height="auto" Width="auto">
            <!--Panorama item one-->
            <controls:PanoramaItem>
                <Rectangle Height="auto" Width="auto" x:Name="BigImageCenter">
                    <Rectangle.Fill>
                        <ImageBrush ImageSource="image030.jpg" />
                    </Rectangle.Fill>
                </Rectangle>
            </controls:PanoramaItem>

            <controls:PanoramaItem>
                <Rectangle Height="auto" Width="auto" x:Name="BigImageLeft">
                    <Rectangle.Fill>
                        <ImageBrush ImageSource="pics/image002.jpg" />
                    </Rectangle.Fill>
                </Rectangle>
            </controls:PanoramaItem>


            <controls:PanoramaItem>
                <Rectangle Height="auto" Width="auto" x:Name="BigImageRight">
                    <Rectangle.Fill>
                        <ImageBrush ImageSource="pics/image003.jpg" />
                    </Rectangle.Fill>
                </Rectangle>
            </controls:PanoramaItem>


        </controls:Panorama>     
    </Grid>



<Grid x:Name="MiniPicturePanel" Grid.Row="1" Margin="0,390,0,0">
 <ScrollViewer x:Name="svSmall" Grid.Row="1" HorizontalContentAlignment="Center">
  <StackPanel x:Name="smallImages" Orientation="Horizontal" VerticalAlignment="Bottom" Margin="330,0,0,0">

     <Rectangle Height="70" Width="110" Margin="0,0,30,0" StrokeThickness="3" MouseLeftButtonUp="smallImage_Tap" Stroke="#FF004080" x:Name="Bat1">
                    <Rectangle.Fill>
                        <ImageBrush ImageSource="image030.jpg" />
                    </Rectangle.Fill>
                </Rectangle>


     <Rectangle Height="70" Width="110" Margin="0,0,30,0" StrokeThickness="3" MouseLeftButtonUp="smallImage_Tap" Stroke="#FF004080" x:Name="Bat2">
                    <Rectangle.Fill>
                        <ImageBrush ImageSource="pics\image002.jpg" />
                    </Rectangle.Fill>
                </Rectangle>

.... и т. Д.

Теперь я кое-что сделал, но не так, как мне хотелось бы:

MouseLeftButtonUp = "smallImage_Tap" - это функция, которая изменит элемент панорамы для "BigImageCenter" на текущий image.fill прямоугольника. Я просто не могу закодировать его, чтобы изменить текущий элемент в поле зрения. Мне нужна помощь с этим.

private void smallImage_Tap(object sender, RoutedEventArgs e) {
    BigImageCenter.Fill = (sender as Rectangle).Fill;

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

И это в значительной степени мой код. Я буквально делаю это динамическое кодирование с нуля, и мне нужна помощь в достижении этой мечты.

PS: мне также нужно знать номер массива, привязанный к изображению, чтобы я мог позволить пользователю "добавить его в избранное" и поместить его на другую страницу.

1 Ответ

0 голосов
/ 20 июля 2011

Я думаю, что это вызовет у вас проблемы с сертификацией, даже если вы все же заставите ее работать (при условии, что я вас правильно понимаю). Это нестандартное использование панорамы.

Я думаю, чтоЛучшее решение - полностью настраиваемый элемент управления с использованием жестов ... это не так сложно сделать, и вы получите полный контроль над презентацией.Это будет гораздо проще сделать, чем взломать панораму и сделать то, что вы хотите.

Удачи, Джон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...