Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / PathGeometry / 25 сообщений из 28, страница 1 из 2
21.08.2012, 18:23
    #37925173
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
До сего момента в качестве анимации не использовал PathAnimation
А именно:

Код: c#
1.
<PathGeometry Figures="M0,292 L75,292 300,380,449,380" />



Я бы хотел чтобы после Figures был не жестко прописан Path, а прописывалось имя моей фигуры (которая является Path) и на основе ее уже принимал тот или иной путь.

Сейчас получается так что если укажу имя вместо конкретного пути - у меня объект, который должен по Path гулять стоит на месте в стороне. Что не так?
Решил сюда отписаться - может кто сталкивался - параллельно также буду решать вопрос))
...
Рейтинг: 0 / 0
21.08.2012, 18:49
    #37925196
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
Алексей К, неужели ты с этим не сталкивался?
...
Рейтинг: 0 / 0
21.08.2012, 19:12
    #37925211
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
...
Рейтинг: 0 / 0
21.08.2012, 19:13
    #37925214
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
Приведи весь пример, там ясно будет.
...
Рейтинг: 0 / 0
21.08.2012, 19:24
    #37925224
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
hex.style,

Спасибо конечно за ссылку, но она не по совсем по теме.
там нигд ене говорится как я могу в XAML подсунуть вместо конкретного Path (Figures) имя моего Path. То что я могу это сделать в code-behind - я не сомневаюсь, но хотелось бы в XAML
...
Рейтинг: 0 / 0
21.08.2012, 19:41
    #37925235
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
Там есть примеры биндинга. Говорю, приведи весь пример целиком, там будет понятно, к чему привязаться хочешь.
Если хочешь к твоему элементу на странице, то вот как-то так:
{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MainWindow}}, Path=someshit, Mode=OneWay}

Ну и так, для справки:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Path>
  <Path.Data>
    <PathGeometry>
      <PathFigure StartPoint="x,y">
        <LineSegment Point="x1,y2" />
      </PathFigure>
    </PathGeometry>
  </Path.Data>
</Path>
...
Рейтинг: 0 / 0
21.08.2012, 23:31
    #37925383
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
hex.style,

Накидал быстрый примерчик в бленде.
мне кажется ты так и не догнал о чем я веду речь.
еще раз посмотри как происходит анимация по X и Y в PathAnimation. Там указываются конкретные PathGeometry.
А я хочу Path создать отдельно, а в анимации привязываться к имени и возмонжно к соответсующему свойству.
Ты то что мне предлагал сам проверял? Ну это вообще не катит.
Seva в одном из моих обсуждений тоже мне подсовывал RelativeSource но сам по ходу не проверял.
...
Рейтинг: 0 / 0
22.08.2012, 11:57
    #37925965
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrus,

Покопал в разныхм естах.
Сейчас все упирается в то, как из Path получить Motion Path. То есть, когда я делаю анимацию в бленде я указываю объект, который будет гулять по pathи собственно сам Path. Но в самом начале я выбираю нужный мне Path и нажимаю Convert to Motion Path. Хотелось бы делать такую конвертацию в коде тогда можно было бы на основе полученной Path динамически менять объекты анимации
...
Рейтинг: 0 / 0
22.08.2012, 12:18
    #37926021
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrus,

Если кому интересно будет.
Работает номально если делать так -

Код: c#
1.
2.
PathGeometry pg = (PathGeometry)Window.FindResource("pathg");
            pg.Figures = path.Data.GetFlattenedPathGeometry().Figures

;

где pg - ресурс, к которому подключается анимация -

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Window.Resources>
        <PathGeometry x:Key="pathg"/>
		<Storyboard x:Key="Storyboard1">
            <DoubleAnimationUsingPath Duration="0:0:2" Source="X" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="rectangle"
                                      PathGeometry="{DynamicResource pathg}"/>
            <DoubleAnimationUsingPath Duration="0:0:2" Source="Y" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="rectangle"
                                      PathGeometry="{DynamicResource pathg}"/>
		</Storyboard>
	</Window.Resources>



Так вот, если у меня объект Path (из которого я хочу вытащить Data) сидит во Viewbox то все работает
...
Рейтинг: 0 / 0
22.08.2012, 12:43
    #37926081
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrus,

Единственно что осталось понять - как заставить перемещаемый объект в таком случае вставать в начало нужного мне Path. То етсь траектория движения как раз - которая имеет геометрия Path. Но вот движется объект в другой стороне
...
Рейтинг: 0 / 0
22.08.2012, 13:08
    #37926141
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrus,

x

оно?
...
Рейтинг: 0 / 0
22.08.2012, 13:40
    #37926207
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
AlexeiK,

Не то.
Получать PathGeometry.Figures я могу - я уже показывал в предыдущем примере - и у меня было меньше кода.
Но вот чтобы в итоге шарик гулял именно по нужному Path мне приходится его смещать. Поэтому хочу понять - как автоматически заставить шарик самому позиционироваться в начало нужного мне Path
...
Рейтинг: 0 / 0
22.08.2012, 14:20
    #37926304
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrus, да, без примера совсем непонятно было, что ты хочешь. Интересная тема, в школе подобные вещи на флешке делал =)

Не совсем понял твою последнюю хотелку. Немного сумбурно написано. Перефразируй в последовательности: что есть, что не устраивает, что нужно.
авторЕдинственно что осталось понять - как заставить перемещаемый объект в таком случае вставать в начало нужного мне Path. То етсь траектория движения как раз - которая имеет геометрия Path. Но вот движется объект в другой стороне

p.s. я бы на твоем месте привязывал события анимации к самому элементу и для анимации resources не использовал. Вот пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
	<Window.Resources>
        <!--нехер лишними элементами портить шапочку =) -->
        <PathGeometry x:Key="put" Figures="M-69,-91.5 C-62.435012,-117.25489 -53.786058,-146.82077 -38,-170.49979 C-26.41624,-187.87538 -10.862271,-197.97676 16,-193.49973 C38.713299,-189.71419 50.155862,-187.30492 66,-167.4998 C88.03323,-139.95833 90.693546,-129.76119 132,-121.49992 C149.52131,-117.99567 169.85951,-118.48432 188,-120.49992 C198.71025,-121.68995 203.52602,-118.07798 208,-131.49989 C210.60044,-139.3012 213.56636,-147.0603 217,-154.49983 C221.3915,-164.01472 223.18149,-162.88593 232,-169.49979 C266.75548,-195.56633 273.95288,-186.99781 318,-171.49979" />
	</Window.Resources>

	<Grid x:Name="LayoutRoot">
        <Path Stretch="Fill" Stroke="Black" Height="100">
            <Path.Data>
                <PathGeometry x:Name="putRelativeGeometry" Figures="M-69,-91.5 C-62.435012,-117.25489 -53.786058,-146.82077 -38,-170.49979 C-26.41624,-187.87538 -10.862271,-197.97676 16,-193.49973 C38.713299,-189.71419 50.155862,-187.30492 66,-167.4998 C88.03323,-139.95833 90.693546,-129.76119 132,-121.49992 C149.52131,-117.99567 169.85951,-118.48432 188,-120.49992 C198.71025,-121.68995 203.52602,-118.07798 208,-131.49989 C210.60044,-139.3012 213.56636,-147.0603 217,-154.49983 C221.3915,-164.01472 223.18149,-162.88593 232,-169.49979 C266.75548,-195.56633 273.95288,-186.99781 318,-171.49979"></PathGeometry>
            </Path.Data>
        </Path>
        <Ellipse x:Name="ellipse" Fill="#FF5D5D95" HorizontalAlignment="Left" Height="30" Margin="132,0,0,121" Stroke="Black" VerticalAlignment="Bottom" Width="27" RenderTransformOrigin="0.5,0.5">
			<Ellipse.RenderTransform>
				<TransformGroup>
					<TranslateTransform x:Name="shitMotion"/>
				</TransformGroup>
			</Ellipse.RenderTransform>

            <Ellipse.Triggers>
                <EventTrigger RoutedEvent="Path.Loaded">
                    <BeginStoryboard>
                        <Storyboard RepeatBehavior="Forever">

                            <!-- горизонтально. -->
                            <DoubleAnimationUsingPath
                Storyboard.TargetName="shitMotion"
                Storyboard.TargetProperty="X"
                PathGeometry="{DynamicResource put}"
                Source="X" 
                Duration="0:0:2"  />

                            <!-- вертикально. Для примера можно привязаться к какому-нибудь элементу -->
                            <DoubleAnimationUsingPath
                Storyboard.TargetName="shitMotion"
                Storyboard.TargetProperty="Y"
                PathGeometry="{Binding ElementName=putRelativeGeometry}"
                Source="Y" 
                Duration="0:0:2"  />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                </Ellipse.Triggers>
        </Ellipse>
	</Grid>
...
Рейтинг: 0 / 0
22.08.2012, 14:38
    #37926345
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
а как ты делаешь смещение по path?
...
Рейтинг: 0 / 0
22.08.2012, 14:49
    #37926382
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
AlexeiK, по ходу имеется ввиду Margin эллипса =)
...
Рейтинг: 0 / 0
22.08.2012, 15:40
    #37926543
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
hex.style,

Чуток попозже выложу код.
Надо по работу одну фигню добить.
...
Рейтинг: 0 / 0
22.08.2012, 15:41
    #37926549
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
AlexeiK,

Не совсем понял про смещение по Path.
У меня есть объект анимации для типов UsingPath, у меня есть объект, который будет двигаться по этому Path - elipse.
Поэтому не совсем понял твой вопрос. Что за смещение?
...
Рейтинг: 0 / 0
22.08.2012, 15:50
    #37926575
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
hex.style,

Вот такой вопрос к тебе. Вот ты мне предлагаешь привязываеться к PathGeometry непосредственно из кода (и даешь пример код). А ты этот код проверял, ты сам уверен что он рабочий? Я вот тебе скажу что пример кода не работает
...
Рейтинг: 0 / 0
22.08.2012, 15:51
    #37926579
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
hex.style,

Если что вот тебе код, котоырй ты мне предлагал (прикрепил)
...
Рейтинг: 0 / 0
22.08.2012, 16:08
    #37926636
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
hex.style,

Прикрепил простенький пример.
Если сейчас запустите пример - то все как бы гуд.
Но если Вы сместите элипс в другое место - то траектория его движения не будет четко ложится на прорисованный Path.
То есть получается, что эта анимация у меня зависит от того где расположен элипс - а это ведь я считаю неправильно
...
Рейтинг: 0 / 0
22.08.2012, 16:18
    #37926663
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrushex.style,

Вот такой вопрос к тебе. Вот ты мне предлагаешь привязываеться к PathGeometry непосредственно из кода (и даешь пример код). А ты этот код проверял, ты сам уверен что он рабочий? Я вот тебе скажу что пример кода не работает

А я вот скажу, что код работает =Р
Мой исходник со мной согласится ;-)

p.s. у тебя в исходнике не хватает ссылки на файл с иконкой.
...
Рейтинг: 0 / 0
22.08.2012, 16:27
    #37926679
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrushex.style,

Если что вот тебе код, котоырй ты мне предлагал (прикрепил)

Не тот архив. Там нет этого кода.
...
Рейтинг: 0 / 0
22.08.2012, 16:33
    #37926691
hex.style
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
unknownfromrushex.style,

Прикрепил простенький пример.
Если сейчас запустите пример - то все как бы гуд.
Но если Вы сместите элипс в другое место - то траектория его движения не будет четко ложится на прорисованный Path.
То есть получается, что эта анимация у меня зависит от того где расположен элипс - а это ведь я считаю неправильно

Если анимацию будешь делать из тела, то можно высчитать margin и привязаться к фигуре.
...
Рейтинг: 0 / 0
22.08.2012, 16:41
    #37926716
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
hex.style,

Поменяй местами Элипс и Path и у тебя тоже не будет работать)) Это не очень мне нравится. То что при определенном раскладе можно по имени привязаться это я в курсе. Но почему если я меняю элипс и пас местами - у меня не срабатывает анимация - учитывая что это не ресурс а привязка по имени к объекту.

ну и остается проблема по совпадению трекеа движения элипса с пас.

по поводу иконки не хватает - я в курсе - я ее удалил, чтобы проект меньше весил, а то по требованиям (не больше 150 килобайт) не подходит
...
Рейтинг: 0 / 0
22.08.2012, 17:05
    #37926764
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PathGeometry
pathg = PathGeometry.CreateFromGeometry(path.Data);

так ты сможешь передать данные в pathgeometry.
только вот не пашет :)
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / PathGeometry / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]