#c# #arrays #image #windows-phone #panoramas
#c# #массивы #изображение #windows-phone #панорамы
Вопрос:
Итак, у меня проблема с кодированием, с которой мне нужна помощь, и, проще говоря, я понятия не имею, что я с этим делаю. К вашему сведению, я не использую инструментарий для прослушивания жестов.
У меня есть страница панорамы с 3 элементами панорамы: BigImageCenter, BigImageLeft, BigImageRight.
В моем приложении есть множество изображений, которые будут загружены вместе с приложением. Цель на этой странице панорам — установить в нижней части страницы средство просмотра прокрутки, чтобы отображать весь список изображений, поставляемых с приложением, в виде маленьких миниатюр, а верхняя часть страницы должна быть элементами панорамы, где при щелчке влево или вправо изображения методично продвигаются (или возвращаются, если щелкнуть влево) вниз по списку.
Кроме того, если вы нажмете на одну из миниатюр в нижнем окне scrollviewer, это заменит текущее изображение панорамы на это уменьшенное изображение. Если вы щелкнете влево или вправо на странице панорамы, вы получите значение -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="picsimage002.jpg" />
</Rectangle.Fill>
</Rectangle>
…. и так далее
Теперь я кое-что сделал, но не так, как хотелось бы:
MouseLeftButtonUp=»smallImage_Tap» — это функция, которая изменит элемент панорамы для «BigImageCenter» на текущее изображение.заливка прямоугольника. Я просто не могу закодировать это, чтобы изменить текущий сводный элемент в представлении. Мне нужна помощь с этим.
private void smallImage_Tap(object sender, RoutedEventArgs e) {
BigImageCenter.Fill = (sender as Rectangle).Fill;
На случай, если вам интересно, почему я использую прямоугольники, для меня это был самый простой способ изменить изображение с помощью кода, стоящего за ним, при нажатии на уменьшенный эскиз.
И это в значительной степени моя исходная информация. Я буквально делаю это динамическое кодирование с нуля, и мне нужна помощь в достижении этой мечты.
PS: Мне также нужно знать номер массива, привязанный к изображению, чтобы я мог разрешить пользователю добавлять его в «Избранное» и размещать на другой странице.
Комментарии:
1. У кого-нибудь есть предложения? Кажется, я читал, что на самом деле это невозможно выполнить? Под этим я подразумеваю, что если у меня есть 3 сводных элемента, я не могу назначить изображения каждому из этих элементов и заставить их перейти к этому месту в массиве? Аааа!
Ответ №1:
Я думаю, это вызовет у вас проблемы с сертификацией, даже если вы заставите это работать (при условии, что я правильно вас понимаю.) Это нестандартное использование панорамы.
Я думаю, что лучшим решением является полностью настраиваемое управление с использованием жестов…это не так сложно сделать, и у вас будет полный контроль над презентацией. Это будет намного проще сделать, чем взломать pano, чтобы делать то, что вы хотите.
Удачи, Джон