Панорамы и массивы изображений

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

У меня есть страница панорамы с 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: мне также нужно знать номер массива, привязанный к изображению, чтобы я мог разрешить пользователю добавить его в «Избранное» и поместить на другую страницу.


person topcoderwannabe    schedule 05.06.2011    source источник
comment
У кого-нибудь есть предложения? Кажется, я читал, что на самом деле это невозможно? Под этим я подразумеваю, что если у меня есть 3 элемента поворота, я не могу назначать изображения каждому из этих элементов и заставлять их переходить в это место в массиве? Аааа!   -  person topcoderwannabe    schedule 07.06.2011


Ответы (1)


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

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

Удачи, Джон

person John Nagle    schedule 20.07.2011