public override void Perform() { if (InkCanvas.Strokes.Count == 0) { for (int i = 0; i < StylusPointCollection.Count; i++) { if (StylusPointCollection[i].HasProperty(StylusPointPropertyInfo)) { if (!StylusPointPropertyInfo.IsButton) { StylusPoint stylusPoint = StylusPointCollection[i]; int value = stylusPoint.GetPropertyValue(StylusPointPropertyInfo); value++; stylusPoint.SetPropertyValue(StylusPointPropertyInfo, value); StylusPointCollection[i] = stylusPoint; } } } //add the stroke and manipulate the points Stroke addStroke = new Stroke(StylusPointCollection); InkCanvas.Strokes.Add(addStroke); } else //randomly grab a stroke and tweak the data. { Stroke stroke = InkCanvas.Strokes[StrokeIndex % InkCanvas.Strokes.Count]; StylusPointDescription StylusPointDescription = stroke.StylusPoints.Description; ReadOnlyCollection <StylusPointPropertyInfo> StylusPointPropertyInfo = StylusPointDescription.GetStylusPointProperties(); for (int i = 0; i < stroke.StylusPoints.Count; i++) { StylusPoint StylusPoint = stroke.StylusPoints[i]; for (int j = 0; j < StylusPointPropertyInfo.Count; j++) { if (stroke.StylusPoints[i].HasProperty(StylusPointPropertyInfo[j])) { if (!StylusPointPropertyInfo[j].IsButton) { if (StylusPointProperties.X.Id == StylusPointPropertyInfo[j].Id) { StylusPoint.X = StylusPoint.X * XFact; } else if (StylusPointProperties.Y.Id == StylusPointPropertyInfo[j].Id) { StylusPoint.Y = StylusPoint.Y * YFact; } else { int value = StylusPoint.GetPropertyValue(StylusPointPropertyInfo[j]); //pick a random number and set the value value = Math.Min(StylusPointPropertyInfo[j].Minimum + GetValue % StylusPointPropertyInfo[j].Maximum, StylusPointPropertyInfo[j].Maximum); StylusPoint.SetPropertyValue(StylusPointPropertyInfo[j], value); } } } } stroke.StylusPoints[i] = StylusPoint; int hash = StylusPoint.GetHashCode(); } } }
//</Snippet4> void StylusPointConstructor() { //<snippet5> StylusPointDescription newDescription = new StylusPointDescription(new StylusPointPropertyInfo[] { new StylusPointPropertyInfo(StylusPointProperties.X), new StylusPointPropertyInfo(StylusPointProperties.Y), new StylusPointPropertyInfo(StylusPointProperties.NormalPressure), new StylusPointPropertyInfo(StylusPointProperties.XTiltOrientation), new StylusPointPropertyInfo(StylusPointProperties.YTiltOrientation), new StylusPointPropertyInfo(StylusPointProperties.BarrelButton) }); int[] propertyValues = { 1800, 1000, 1 }; StylusPoint newStylusPoint = new StylusPoint(100, 100, .5f, newDescription, propertyValues); //</snippet5> //<Snippet16> StylusPointPropertyInfo XTiltPropertyInfo = new StylusPointPropertyInfo(StylusPointProperties.XTiltOrientation, 0, 3600, StylusPointPropertyUnit.Degrees, 10f); //</Snippet16> StylusPoint point = new StylusPoint(); //<Snippet11> if (point.HasProperty(StylusPointProperties.PitchRotation)) { int pitchRotation = point.GetPropertyValue(StylusPointProperties.PitchRotation); } //</Snippet11> //<Snippet12> if (point.HasProperty(StylusPointProperties.PitchRotation)) { point.SetPropertyValue(StylusPointProperties.PitchRotation, 1000); } //</Snippet12> }