public void AddAnnotation(Annotation a) { Dispatcher.BeginInvoke(new Action(() => { Point pos; if (GetPressScatterViewItemPosition(a.Press, out pos)) { PostIt postIt = new PostIt(); postIt.Text = a.Comment; postIt.User = a.User; ScatterViewItem svi = new ScatterViewItem(); svi.Content = postIt; svi.Center = GetPostItStartPosition(a.User); svi.CanScale = false; svi.CanMove = true; Scatter.Items.Add(svi); pos.X += rand.Next(-POSTIT_VARIATION, POSTIT_VARIATION); pos.Y += rand.Next(-POSTIT_VARIATION, POSTIT_VARIATION); Duration duration = new Duration(TimeSpan.FromSeconds(0.5)); PointAnimation an = new PointAnimation(); an.Duration = duration; an.FillBehavior = FillBehavior.Stop; an.To = pos; Storyboard sb = new Storyboard(); sb.Duration = duration; sb.Children.Add(an); Storyboard.SetTarget(an, svi); Storyboard.SetTargetProperty(an, new PropertyPath(ScatterViewItem.CenterProperty)); sb.Completed += new EventHandler((s, e) => { svi.Center = pos; }); sb.Begin(Scatter); } })); }
public void MakeAnnotation(Annotation a) { try { Tabletop.AddAnnotation(a); } catch (Exception e) { throw new FaultException(new FaultReason(e.Message + "\r\n" + e.StackTrace)); } }