■ InkCanvas 객체의 데이터를 XAML 데이터로 변환해 저장하는 방법을 보여준다.
▶ 예제 코드 (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 45 46 47 48 49 50 51 52 53 54 55 56 57 |
using System.IO; using System.Windows.Controls; using System.Windows.Ink; using System.Windows.Markup; using System.Windows.Media; #region XAML 데이터 저장하기 - SaveXAMLData(inkCanvas, filePath) /// <summary> /// XAML 데이터 저장하기 /// </summary> /// <param name="inkCanvas">InkCanvas 객체</param> /// <param name="filePath">파일 경로</param> public void SaveXAMLData(InkCanvas inkCanvas, string filePath) { FileStream stream = null; try { stream = new FileStream(filePath, FileMode.Create, FileAccess.Write); DrawingGroup drawingGroup = new DrawingGroup(); foreach(Stroke stroke in inkCanvas.Strokes) { Color color = stroke.DrawingAttributes.Color; if(stroke.DrawingAttributes.IsHighlighter) { color = Color.FromArgb(128, color.R, color.G, color.B); } drawingGroup.Children.Add ( new GeometryDrawing ( new SolidColorBrush(color), null, stroke.GetGeometry() ) ); } XamlWriter.Save(drawingGroup, stream); } finally { if(stream != null) { stream.Close(); } } } #endregion |