2012-06-04 1 views
0

довольно новый для WPF, но я сделал приложение Surface, чтобы привлечь внимание людей в моем офисе.Создание объекта «Throb»/Grow and Shrink

http://www.diaryofaninja.com/blog/2012/06/03/building-an-image-and-video-viewer-for-microsoft-surface-20-in-no-time-at-all

, что я хотел бы сделать, если бы люди не коснулись экрана на некоторое время (я уже запись этого с помощью таймера), я хочу, чтобы каждый из объектов в моей приложение «Throb» один за другим, чтобы привлечь внимание людей.

Могу ли я использовать трансформацию или раскадровку?

+0

Вы бы иметь раскадровку изменяющий значения в ScaleTransform. Вам просто нужно поиграть со значениями раскадровки, чтобы заставить его пульсировать (AccelerationRatio, DecelerationRatio). –

+1

Um ... downvotes? – Doug

ответ

2

Я закончил тем, вызвав следующий метод по таймеру:

void RunScaleAnimation(FrameworkElement e) 
{ 

var storyboard = new Storyboard(); 
var easeOut = new BackEase { EasingMode = EasingMode.EaseOut, Amplitude = 0.3 }; 

double startHeight = e.ActualHeight; 
double startWidth = e.ActualWidth; 

var growAnimationHOut = new DoubleAnimation(startHeight, startHeight * 1.05, 
              TimeSpan.FromMilliseconds(100)) { AutoReverse = true }; 

var growAnimationWOut = new DoubleAnimation(startWidth, startWidth * 1.05, 
              TimeSpan.FromMilliseconds(100)) { AutoReverse = true }; 

growAnimationHOut.EasingFunction = easeOut; 
growAnimationWOut.EasingFunction = easeOut; 

storyboard.Children.Add(growAnimationHOut); 
storyboard.Children.Add(growAnimationWOut); 

Storyboard.SetTargetProperty(growAnimationWOut, new PropertyPath(FrameworkElement.WidthProperty)); 
Storyboard.SetTargetProperty(growAnimationHOut, new PropertyPath(FrameworkElement.HeightProperty)); 

e.BeginStoryboard(storyboard); 
}