프로젝트

일반

사용자정보

개정판 b35682c3

IDb35682c3c8787869343164136cbe3f89dded6516
상위 d70c967a
하위 f0dba314

김태성이(가) 5년 이상 전에 추가함

issue #0007 angle 문제 수정( Key event가 이상함)

Change-Id: I7af7ff329c12375823c4111233f091ad6a7dcdaa

차이점 보기:

KCOM.sln
43 43
		테스트.txt = 테스트.txt
44 44
	EndProjectSection
45 45
EndProject
46
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkupTest", "MarkupTest\MarkupTest.csproj", "{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}"
47
EndProject
46 48
Global
47 49
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
48 50
		Debug|Any CPU = Debug|Any CPU
......
221 223
		{9EFE95D6-9985-422A-A76F-285C8CF73617}.Release|x64.Build.0 = Release|Any CPU
222 224
		{9EFE95D6-9985-422A-A76F-285C8CF73617}.Release|x86.ActiveCfg = Release|Any CPU
223 225
		{9EFE95D6-9985-422A-A76F-285C8CF73617}.Release|x86.Build.0 = Release|Any CPU
226
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
227
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Debug|Any CPU.Build.0 = Debug|Any CPU
228
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Debug|x64.ActiveCfg = Debug|Any CPU
229
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Debug|x64.Build.0 = Debug|Any CPU
230
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Debug|x86.ActiveCfg = Debug|Any CPU
231
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Debug|x86.Build.0 = Debug|Any CPU
232
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Release|Any CPU.ActiveCfg = Release|Any CPU
233
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Release|Any CPU.Build.0 = Release|Any CPU
234
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Release|x64.ActiveCfg = Release|Any CPU
235
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Release|x64.Build.0 = Release|Any CPU
236
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Release|x86.ActiveCfg = Release|Any CPU
237
		{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}.Release|x86.Build.0 = Release|Any CPU
224 238
	EndGlobalSection
225 239
	GlobalSection(SolutionProperties) = preSolution
226 240
		HideSolutionNode = FALSE
KCOM/Assets/RadGridViewStyleResourceDictionary.xaml
49 49
    <SolidColorBrush x:Key="ItemInnerBorder_Selected" Color="#2181FF"/>
50 50
    <SolidColorBrush x:Key="ItemBackground_Selected" Color="Transparent"/>
51 51
    <SolidColorBrush x:Key="ItemOuterBorder_Invalid" Color="#FFCE7D7D"/>
52
    <SolidColorBrush x:Key="HorizontalGridLinesBrush" Color="#FFB0AFAF"/>
52 53
    <LinearGradientBrush x:Key="ItemInnerBorder_Invalid" EndPoint="0.5,1" StartPoint="0.5,0">
53 54
        <GradientStop Color="#FFEBF4FD"/>
54 55
        <GradientStop Color="#FFDBEAFD" Offset="1"/>
......
262 263
                <telerik:GridViewToggleButton x:Name="PART_HierarchyExpandButton" Grid.Column="2" IsHitTestVisible="{Binding IsExpandable, RelativeSource={RelativeSource TemplatedParent}}" IsTabStop="{TemplateBinding IsTabStop}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Opacity="{Binding IsExpandable, Converter={StaticResource BooleanToOpacityConverter}, RelativeSource={RelativeSource TemplatedParent}}" telerik:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" telerik:StyleManager.Theme="{StaticResource Theme}" Visibility="{Binding HasHierarchy, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}" Width="25"/>
263 264
                <Border Grid.Column="2" telerik:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{Binding HasHierarchy, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}"/>
264 265
                <telerik:DataCellsPresenter x:Name="PART_DataCellsPresenter" Grid.Column="3" telerik:StyleManager.Theme="{StaticResource Theme}"/>
265
                <Border x:Name="PART_RowBorder" BorderBrush="{StaticResource HorizontalGridLinesBrush}" BorderThickness="{Binding HorizontalGridLinesWidth, ConverterParameter=Bottom, Converter={StaticResource GridLineWidthToThicknessConverter}, RelativeSource={RelativeSource TemplatedParent}}" Grid.ColumnSpan="4" Grid.Column="1" HorizontalAlignment="{Binding RenderHorizontalAlignment, RelativeSource={RelativeSource TemplatedParent}}" MinWidth="{Binding RenderWidth, RelativeSource={RelativeSource TemplatedParent}}" Grid.RowSpan="4" telerik:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" VerticalAlignment="Bottom"/>
266
                <Border x:Name="PART_RowBorder" BorderBrush="{DynamicResource HorizontalGridLinesBrush}" BorderThickness="{Binding HorizontalGridLinesWidth, ConverterParameter=Bottom, Converter={StaticResource GridLineWidthToThicknessConverter}, RelativeSource={RelativeSource TemplatedParent}}" Grid.ColumnSpan="4" Grid.Column="1" HorizontalAlignment="{Binding RenderHorizontalAlignment, RelativeSource={RelativeSource TemplatedParent}}" MinWidth="{Binding RenderWidth, RelativeSource={RelativeSource TemplatedParent}}" Grid.RowSpan="4" telerik:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" VerticalAlignment="Bottom"/>
266 267
                <Border BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,1" Background="{StaticResource GridView_HierarchyBackground}" Grid.ColumnSpan="2" Grid.Column="2" HorizontalAlignment="{Binding RenderHorizontalAlignment, RelativeSource={RelativeSource TemplatedParent}}" MaxWidth="30000" Padding="6" Grid.Row="2" telerik:SelectiveScrollingGrid.SelectiveScrollingClip="True" Visibility="{Binding IsExpanded, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}">
267 268
                    <ContentPresenter x:Name="PART_HierarchyChildPresenter" telerik:SelectiveScrollingGrid.SelectiveScrollingClip="True"/>
268 269
                </Border>
KCOM/Common/ViewerDataModel.cs
79 79

  
80 80
        private double angle = 0;
81 81

  
82
        private double pageAngle = 0;
83

  
82 84
        private double angleOffsetX = 0;
83 85

  
84 86
        private double angleOffsetY = 0;
......
899 901
            }
900 902
        }
901 903

  
904
        public double PageAngle
905
        {
906
            get
907
            {
908
                return pageAngle;
909
            }
910
            set
911
            {
912
                pageAngle = value;
913
                OnPropertyChanged("PageAngle");
914
            }
915
        }
916

  
902 917
        private bool _PageBalanceMode { get; set; }
903 918
        public bool PageBalanceMode
904 919
        {
KCOM/Controls/AdornerFinal.xaml
15 15
                    <Setter.Value>
16 16
                        <ControlTemplate TargetType="Thumb">
17 17
                            <Grid >
18
                                <Rectangle x:Name="RectThumb" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Fill="#ffcfcfce"  
18
                                <Rectangle x:Name="RectThumb" Width="{TemplateBinding  Width}" Height="{TemplateBinding Height}" Fill="#ffcfcfce"  
19 19
                                           Opacity="0.6" Stroke="#ff6a6b68" StrokeDashArray="2 2" MouseLeftButtonDown="RectThumb_MouseLeftButtonDown">
20 20
                                </Rectangle>
21 21
                                <telerik:RadDropDownButton DropDownIndicatorVisibility="Collapsed" IsHitTestVisible="False" x:Name="Date_Drop" Opacity="0.01" 
......
40 40
                    <Setter.Value>
41 41
                        <ControlTemplate TargetType="Thumb">
42 42
                                <!--<TextBox Text="" x:Name="testText" Loaded="testText_Loaded"  Width="{Binding Width, ElementName=Self}" Height="{Binding Height, ElementName=Self}"/>-->
43
                                <Rectangle Fill="#ff8ef814" Width="{Binding Width, ElementName=Self}" Height="{Binding Height, ElementName=Self}"
43
                                <Rectangle x:Name="thumbRect" Fill="#ff8ef814" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"
44 44
        						    Opacity="0.6" MouseLeftButtonDown="RectThumb_MouseLeftButtonDown"/>                                
45 45
                        </ControlTemplate>
46 46
                    </Setter.Value>
......
83 83
                            <Ellipse Stroke="#ff2e3436"  StrokeThickness="2" MouseLeftButtonDown="ControlPointMouseLeftButtonDown"
84 84
                                     HorizontalAlignment="Center" Width="20"  Height="20" Margin="0,0,0,0" Canvas.ZIndex="1">
85 85
                                <Ellipse.Fill>
86
                                    <SolidColorBrush Color="#fff814df" Opacity="{Binding Opacity}"/>
86
                                    <SolidColorBrush Color="#fff814df"/>
87
                                    <!--<SolidColorBrush Color="#fff814df" Opacity="{Binding Opacity, RelativeSource={RelativeSource TemplatedParent}}"/>-->
87 88
                                </Ellipse.Fill>
88 89
                                <i:Interaction.Behaviors>
89 90
                                    <behavior:ExpandingMouseOver ScaleFactor="2"/>
KCOM/Controls/AdornerFinal.xaml.cs
303 303
                    {
304 304
                        if (AngleValue == 0)
305 305
                        {
306
                            AngleValue = (item.DrawingData as TextControl).Angle;
306
                            AngleValue = (item.DrawingData as TextControl).CommentAngle;
307 307
                        }
308 308
                        double X = Canvas.GetLeft((item.DrawingData as TextControl));
309 309
                        double Y = Canvas.GetTop((item.DrawingData as TextControl));
......
369 369
                        Group_ID = member.GroupID,
370 370
                    });
371 371
                    (member as ArrowTextControl).Base_TextBox.IsHitTestVisible = false;
372
                    AngleValue = (member as ArrowTextControl).Angle;
372
                    AngleValue = (member as ArrowTextControl).CommentAngle;
373 373
                    Observable.FromEventPattern(((ArrowTextControl)member).Base_TextBox, "LostFocus").Subscribe(a =>
374 374
                    {
375 375
                        TextCompensation = false;
......
383 383
                    break;
384 384
                case "ImgControl":
385 385
                    this.Members.Add(new AdornerMember { DrawingData = member, Drawingtype = member.ControlType, ThumbList = new List<MyThumb>(), Symbol_ID = member.SymbolID, Group_ID = member.GroupID });
386
                    AngleValue = (member as ImgControl).Angle;
386
                    AngleValue = (member as ImgControl).CommentAngle;
387 387
                    break;
388 388
                case "DateControl":
389 389
                    this.Members.Add(new AdornerMember { DrawingData = member, Drawingtype = member.ControlType, ThumbList = new List<MyThumb>(), Symbol_ID = member.SymbolID, Group_ID = member.GroupID });
390
                    AngleValue = (member as DateControl).Angle;
390
                    AngleValue = (member as DateControl).CommentAngle;
391 391
                    break;
392 392
                case "SignControl":
393 393
                    this.Members.Add(new AdornerMember { DrawingData = member, Drawingtype = member.ControlType, ThumbList = new List<MyThumb>(), Symbol_ID = member.SymbolID, Group_ID = member.GroupID });
394
                    AngleValue = (member as SignControl).Angle;
394
                    AngleValue = (member as SignControl).CommentAngle;
395 395
                    break;
396 396
                case "SymControl":
397 397
                    this.Members.Add(new AdornerMember { DrawingData = member, Drawingtype = member.ControlType, ThumbList = new List<MyThumb>(), Symbol_ID = member.SymbolID, Group_ID = member.GroupID });
398
                    AngleValue = (member as SymControl).Angle;
398
                    AngleValue = (member as SymControl).CommentAngle;
399 399
                    break;
400 400
                case "SymControlN":
401 401
                    this.Members.Add(new AdornerMember { DrawingData = member, Drawingtype = member.ControlType, ThumbList = new List<MyThumb>(), Symbol_ID = member.SymbolID, Group_ID = member.GroupID });
402
                    AngleValue = (member as SymControlN).Angle;
402
                    AngleValue = (member as SymControlN).CommentAngle;
403 403
                    break;
404 404
                case "TextControl":
405 405
                    this.Members.Add(new AdornerMember { DrawingData = member, Drawingtype = ControlType.TextControl, ThumbList = new List<MyThumb>(), Symbol_ID = member.SymbolID, Group_ID = member.GroupID });
......
422 422
                    DragThumb.RenderTransformOrigin = new Point(0.0, 0.0);
423 423
                    DragThumb.RenderTransform = new RotateTransform()
424 424
                    {
425
                        Angle = (member as TextControl).Angle,
425
                        Angle = (member as TextControl).CommentAngle,
426 426
                        //CenterX = middle.X,
427 427
                        //CenterY = middle.Y,
428 428
                    };
......
430 430
                    AdornerBorder.RenderTransformOrigin = new Point(0.0, 0.0);
431 431
                    AdornerBorder.RenderTransform = new RotateTransform()
432 432
                    {
433
                        Angle = (member as TextControl).Angle,
433
                        Angle = (member as TextControl).CommentAngle,
434 434
                        //CenterX = middle.X,
435 435
                        //CenterY = middle.Y,
436 436
                    };
......
480 480
        {
481 481
            AdornerBorder.RenderTransformOrigin = new Point(0.5, 0.5);
482 482
            DragThumb.RenderTransformOrigin = new Point(0.5, 0.5);
483
            AdornerBorder.RenderTransform = new RotateTransform() { Angle = (member as IViewBox).Angle };
484
            DragThumb.RenderTransform = new RotateTransform() { Angle = (member as IViewBox).Angle };
483
            AdornerBorder.RenderTransform = new RotateTransform() { Angle = (member as IViewBox).CommentAngle };
484
            DragThumb.RenderTransform = new RotateTransform() { Angle = (member as IViewBox).CommentAngle };
485 485
        }
486 486

  
487 487
        public void SetAdornerMember(List<CommentUserInfo> members)
......
616 616
            {
617 617
                if (this.Members.First().DrawingData.GetType().Name == "TextControl")
618 618
                {
619
                    if ((this.Members.First().DrawingData as TextControl).Angle != 0)
619
                    if ((this.Members.First().DrawingData as TextControl).CommentAngle != 0)
620 620
                    {
621
                        trRotate.Angle = (this.Members.First().DrawingData as TextControl).Angle;
622
                        trRotateThumb.Angle = (this.Members.First().DrawingData as TextControl).Angle;
621
                        trRotate.Angle = (this.Members.First().DrawingData as TextControl).CommentAngle;
622
                        trRotateThumb.Angle = (this.Members.First().DrawingData as TextControl).CommentAngle;
623 623
                    }
624 624
                    else
625 625
                    {
......
635 635
                {
636 636
                    double textControlWidth;
637 637
                    double textControlHeight;
638

  
638 639
                    if (((currentControl as TextControl).Base_TextBox.ActualWidth) == 0)
639 640
                    {
640 641
                        textControlWidth = ((currentControl as TextControl).Base_TextBlock.ActualWidth);
......
650 651
                    {
651 652
                        minX = (currentControl as TextControl).EndPoint.X;
652 653
                    }
654

  
653 655
                    if ((currentControl as TextControl).EndPoint.Y < minY)
654 656
                    {
655 657
                        minY = (currentControl as TextControl).EndPoint.Y;
656 658
                    }
659

  
657 660
                    if (textControlWidth + (currentControl as TextControl).EndPoint.X > maxX)
658 661
                    {
659 662
                        maxX = textControlWidth + (currentControl as TextControl).EndPoint.X;
660 663
                    }
664

  
661 665
                    if (textControlHeight + (currentControl as TextControl).EndPoint.Y > maxY)
662 666
                    {
663 667
                        maxY = textControlHeight + (currentControl as TextControl).EndPoint.Y;
......
829 833
                        var temp = (this.Members.First() as AdornerMember).DrawingData as ArrowTextControl;
830 834

  
831 835

  
832
                        switch (Math.Abs(temp.Angle).ToString())
836
                        switch (Math.Abs(temp.CommentAngle).ToString())
833 837
                        {
834 838
                            case "90":
835 839
                                {
......
918 922
                    tm.Style = (Style)this.LayoutRoot.Resources["ThumbTextStyle"];
919 923
                    tm.Width = (member as ArrowTextControl).BoxWidth;
920 924
                    tm.Height = (member as ArrowTextControl).BoxHeight;
921
                    var angle = (member as ArrowTextControl).Angle;
925
                    var angle = (member as ArrowTextControl).PageAngle;
922 926
                    if (Math.Abs(angle).ToString() == "90")
923 927
                    {
924 928
                        tm.RenderTransformOrigin = new Point(0, 0);
......
934 938
                        tm.RenderTransformOrigin = new Point(0.5, 0.5);
935 939
                        tm.RenderTransform = new RotateTransform()
936 940
                        {
937
                            Angle = angle,
941
                            Angle = angle
938 942
                        };
939 943
                    }
940 944
                }
......
1218 1222
                    switch (member.Drawingtype)
1219 1223
                    {
1220 1224
                        case ControlType.TextControl:
1221
                            (member.DrawingData as CommentUserInfo).Angle = AngleValue;
1225
                            (member.DrawingData as CommentUserInfo).CommentAngle = AngleValue;
1222 1226

  
1223 1227
                            DragThumb.RenderTransformOrigin = new Point(0, 0);
1224 1228
                            DragThumb.RenderTransform = new RotateTransform()
1225 1229
                            {
1226 1230

  
1227
                                Angle = (member.DrawingData as CommentUserInfo).Angle
1231
                                Angle = (member.DrawingData as CommentUserInfo).CommentAngle
1228 1232
                            };
1229 1233

  
1230 1234
                            AdornerBorder.RenderTransformOrigin = new Point(0, 0);
1231 1235
                            AdornerBorder.RenderTransform = new RotateTransform()
1232 1236
                            {
1233
                                Angle = (member.DrawingData as CommentUserInfo).Angle
1237
                                Angle = (member.DrawingData as CommentUserInfo).CommentAngle
1234 1238
                            };
1235 1239

  
1236 1240
                            //(member.DrawingData as TextControl).Angle = AngleValue;
......
1256 1260
                        case ControlType.Sign:
1257 1261
                        case ControlType.Symbol:
1258 1262
                        case ControlType.Stamp:
1259
                            (member.DrawingData as CommentUserInfo).Angle = AngleValue;
1263
                            (member.DrawingData as CommentUserInfo).CommentAngle = AngleValue;
1260 1264
                            BorderUpdate();
1261 1265
                            break;
1262 1266
                        case ControlType.PolygonCloud:
......
1264 1268
                            BorderUpdate();
1265 1269
                            break;
1266 1270
                        case ControlType.Circle:
1267
                            (member.DrawingData as CommentUserInfo).Angle = AngleValue;
1271
                            (member.DrawingData as CommentUserInfo).CommentAngle = AngleValue;
1268 1272
                            ((CircleControl)member.DrawingData).SetCenterXY();
1269 1273
                            BorderUpdate();
1270 1274
                            break;
......
1284 1288
            /// get angle from text controls' angle if only text control exists - 2018.05.10 added by humkyung
1285 1289
            if ((1 == this.Members.Count) && (this.Members.First() as AdornerMember).DrawingData.GetType().Name == "TextControl")
1286 1290
            {
1287
                this.AngleValue = ((this.Members.First() as AdornerMember).DrawingData as TextControl).Angle;
1291
                this.AngleValue = ((this.Members.First() as AdornerMember).DrawingData as TextControl).CommentAngle;
1288 1292
            }
1289 1293
            /// up to here
1290 1294

  
......
1365 1369
                        Point middle = MathSet.getMiddlePoint(AllControl.StartPoint, endPointV);
1366 1370
                        AllControl.Base_Grid.RenderTransform = new RotateTransform()
1367 1371
                        {
1368
                            Angle = AllControl.Angle,
1372
                            Angle = AllControl.CommentAngle,
1369 1373
                            CenterX = middle.X,
1370 1374
                            CenterY = middle.Y,
1371 1375
                        };
KCOM/Controls/Sample.xaml.cs
359 359
            ViewerDataModel.Instance.ContentHeight = instanceMain.dzMainMenu.zoomAndPanCanvas.Height;
360 360
            ViewerDataModel.Instance.AngleOffsetX = instanceMain.dzMainMenu.translate.X;
361 361
            ViewerDataModel.Instance.AngleOffsetY = instanceMain.dzMainMenu.translate.Y;
362
            ViewerDataModel.Instance.Angle = instanceMain.dzMainMenu.rotate.Angle;
362
            ViewerDataModel.Instance.PageAngle = instanceMain.dzMainMenu.rotate.Angle;
363 363

  
364 364
            instanceMain.dzMainMenu.pageNavigator._thumbnailItems.Where(info => info.PageNumber == instanceMain.dzMainMenu.pageNavigator.CurrentPage.PageNumber).ToList().ForEach(data =>
365 365
            {
KCOM/Events/Event_KeyEvent.cs
25 25
                
26 26
        public void KeyEventDownAction(object sender, KeyEventArgs e)
27 27
        {
28
            if (e.IsRepeat)
29
                return;
28
            //if (e.IsRepeat)
29
            //    return;
30

  
30 31
            switch (e.Key)
31 32
            {
32 33
                //강인구 추가
......
279 280
                    this.dzMainMenu.pageNavigator.GotoPage(Convert.ToInt32(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.CurrentPage.PageNumber) + 1);
280 281
                    break;
281 282
            }
283

  
282 284
        }
283 285

  
284 286
        /// <summary>
KCOM/Events/Implementation/TopMenuEvent.cs
1586 1586
            ViewerDataModel.Instance.ContentHeight = instanceMain.dzMainMenu.zoomAndPanCanvas.Height;
1587 1587
            ViewerDataModel.Instance.AngleOffsetX = instanceMain.dzMainMenu.translate.X;
1588 1588
            ViewerDataModel.Instance.AngleOffsetY = instanceMain.dzMainMenu.translate.Y;
1589
            ViewerDataModel.Instance.Angle = instanceMain.dzMainMenu.rotate.Angle;
1589
            ViewerDataModel.Instance.PageAngle = instanceMain.dzMainMenu.rotate.Angle;
1590 1590
            //ViewerDataModel.Instance.Document_Info.Clear();
1591 1591
            //ViewerDataModel.Instance.Document_Info.Where(i => i.PAGE_NUMBER == instanceMain.dzMainMenu.pageNavigator.CurrentPage.PageNumber).ToList().ForEach(value =>
1592 1592
            //{
KCOM/Events/RedoCommand.cs
83 83

  
84 84
                            if ((item.Markup as IViewBox) != null)
85 85
                            {
86
                                (item.Markup as IViewBox).Angle = item.Angle;
86
                                (item.Markup as IViewBox).CommentAngle = item.Angle;
87 87
                            }
88 88
                            if ((item.Markup as TextControl) != null)
89 89
                            {
90
                                (item.Markup as TextControl).Angle = item.Angle;
90
                                (item.Markup as TextControl).CommentAngle = item.Angle;
91 91

  
92 92
                                Canvas.SetLeft((item.Markup as TextControl), item.PointSet[0].X);
93 93
                                Canvas.SetTop((item.Markup as TextControl), item.PointSet[0].Y);
KCOM/Events/UndoCommand.cs
79 79

  
80 80
                if (comment is ArrowTextControl)
81 81
                {
82
                    multi_Undo_Data.Angle = dAngle = (comment as ArrowTextControl).Angle;
82
                    multi_Undo_Data.Angle = dAngle = (comment as ArrowTextControl).CommentAngle;
83 83
                }
84 84
                else
85 85
                {
......
144 144

  
145 145
                            if ((item.Markup as IViewBox) != null)
146 146
                            {
147
                                (item.Markup as IViewBox).Angle = item.Angle;
147
                                (item.Markup as IViewBox).CommentAngle = item.Angle;
148 148
                            }
149 149
                            if ((item.Markup as TextControl) != null)
150 150
                            {
151
                                (item.Markup as TextControl).Angle = item.Angle;
151
                                (item.Markup as TextControl).CommentAngle = item.Angle;
152 152
                                Canvas.SetLeft((item.Markup as TextControl), item.PointSet[0].X);
153 153
                                Canvas.SetTop((item.Markup as TextControl), item.PointSet[0].Y);
154 154
                            }
KCOM/MainWindow.xaml.cs
53 53
        {
54 54
            App.splashString(ISplashMessage.MAINWINDOW);
55 55
            this.Loaded += MainWindow_Loaded;
56
            this.KeyDown += new KeyEventHandler(KeyEventDownAction);
56

  
57
            this.AddHandler(Keyboard.KeyDownEvent,
58
                        new KeyEventHandler((sender, e) =>KeyEventDownAction(sender, e)),true);
59

  
60
            //this.PreviewKeyDown += new KeyEventHandler(KeyEventDownAction);
57 61
            //this.SourceInitialized += new EventHandler(win_SourceInitialized);
58 62
        }
59 63

  
KCOM/ViewModel/BiddersViewModel.cs
349 349

  
350 350

  
351 351
                    var center = new Vector(Common.ViewerDataModel.Instance.ImageViewWidth / 2, Common.ViewerDataModel.Instance.ImageViewHeight / 2);
352
                    var matrix = MatrixHelper.Rotation(Common.ViewerDataModel.Instance.Angle, center);
352
                    var matrix = MatrixHelper.Rotation(Common.ViewerDataModel.Instance.PageAngle, center);
353 353
                     rect.Transform(matrix);
354 354

  
355 355
                    double scaleX = Common.ViewerDataModel.Instance.ImageViewWidth / rect.Width;
......
358 358
                    double positionX = 0;
359 359
                    double positionY = 0;
360 360

  
361
                    if (Common.ViewerDataModel.Instance.Angle == 90)
361
                    if (Common.ViewerDataModel.Instance.PageAngle == 90)
362 362
                    {
363 363
                        positionX = Common.ViewerDataModel.Instance.ImageViewHeight - rect.X;
364 364
                        positionY = Common.ViewerDataModel.Instance.ImageViewWidth - rect.Y;
KCOM/ViewModel/RequirementViewModel.cs
355 355

  
356 356

  
357 357
                    var center = new Vector(Common.ViewerDataModel.Instance.ImageViewWidth / 2, Common.ViewerDataModel.Instance.ImageViewHeight / 2);
358
                    var matrix = MatrixHelper.Rotation(Common.ViewerDataModel.Instance.Angle, center);
358
                    var matrix = MatrixHelper.Rotation(Common.ViewerDataModel.Instance.PageAngle, center);
359 359
                     rect.Transform(matrix);
360 360

  
361 361
                    double scaleX = Common.ViewerDataModel.Instance.ImageViewWidth / rect.Width;
......
364 364
                    double positionX = 0;
365 365
                    double positionY = 0;
366 366

  
367
                    if (Common.ViewerDataModel.Instance.Angle == 90)
367
                    if (Common.ViewerDataModel.Instance.PageAngle == 90)
368 368
                    {
369 369
                        positionX = Common.ViewerDataModel.Instance.ImageViewHeight - rect.X;
370 370
                        positionY = Common.ViewerDataModel.Instance.ImageViewWidth - rect.Y;
KCOM/Views/MainMenu.xaml
172 172
                                                </controls:ScaleDecodeImage>-->
173 173
                                                <Image Panel.ZIndex="0" x:Name="mainPanel" RenderOptions.BitmapScalingMode="HighQuality"
174 174
                                                       RenderOptions.EdgeMode="Unspecified" RenderOptions.ClearTypeHint="Enabled"
175
                                                        Source="{Binding ImageViewPath,Mode=TwoWay, Source={x:Static common:ViewerDataModel.Instance}}" 
175
                                                        Source="{Binding ImageViewPath,Mode=OneWay, Source={x:Static common:ViewerDataModel.Instance}}" 
176 176
                                                         Width="{Binding ImageViewWidth,Mode=TwoWay, Source={x:Static common:ViewerDataModel.Instance}}"
177 177
                                                        Height="{Binding ImageViewHeight,Mode=TwoWay, Source={x:Static common:ViewerDataModel.Instance}}"
178 178
                                                           >
......
286 286
                                                   Width="{Binding ImageViewWidth_C, Source={x:Static common:ViewerDataModel.Instance}}" 
287 287
                                                   Height="{Binding ImageViewHeight_C, Source={x:Static common:ViewerDataModel.Instance}}" >
288 288
                                            </Image>
289
                                            <Canvas x:Name="canvas_compareBorder" IsHitTestVisible="False" Width="{Binding ActualWidth, ElementName=zoomAndPanCanvas2}" Height="{Binding ActualHeight, ElementName=zoomAndPanCanvas2}" Panel.ZIndex="1">
289
                                            <Canvas x:Name="canvas_compareBorder" IsHitTestVisible="False" Width="{Binding ActualWidth, ElementName=zoomAndPanCanvas2, Mode=OneWay}" Height="{Binding ActualHeight, ElementName=zoomAndPanCanvas2, Mode=OneWay}" Panel.ZIndex="1">
290 290
                                                <!--<Canvas.RenderTransform>
291 291
                                                    -->
292 292
                                                <!--<RotateTransform Angle="{Binding Angle, Source={x:Static common:ViewerDataModel.Instance}}"/>-->
KCOM/Views/MainMenu.xaml.cs
1545 1545
                    #endregion
1546 1546
                    if (ViewerDataModel.Instance.AngleVisibility == Visibility.Visible)
1547 1547
                    {
1548
                        ViewerDataModel.Instance.Angle = currentControl.Angle;
1548
                        ViewerDataModel.Instance.Angle = currentControl.CommentAngle;
1549 1549
                    }
1550 1550
                }
1551 1551
            }
......
2038 2038
            ViewerDataModel.Instance.ContentHeight = zoomAndPanCanvas.Height;
2039 2039
            ViewerDataModel.Instance.AngleOffsetX = translate.X;
2040 2040
            ViewerDataModel.Instance.AngleOffsetY = translate.Y;
2041
            ViewerDataModel.Instance.Angle = rotate.Angle;
2041
            ViewerDataModel.Instance.PageAngle = rotate.Angle;
2042 2042
        }
2043 2043

  
2044 2044
        private void syncPannelRotate(double angle)
......
3216 3216
                                                ViewerDataModel.Instance.MarkupControls_USER.Add(currentControl);
3217 3217

  
3218 3218
                                                //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정  
3219
                                                (currentControl as ImgControl).Angle -= rotate.Angle;
3219
                                                (currentControl as ImgControl).CommentAngle -= rotate.Angle;
3220 3220
                                        }
3221 3221
                                    }
3222 3222
                                //}
......
3265 3265
                                        ViewerDataModel.Instance.MarkupControls_USER.Add(currentControl);
3266 3266

  
3267 3267
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정 
3268
                                        (currentControl as DateControl).Angle -= rotate.Angle;
3268
                                        (currentControl as DateControl).CommentAngle -= rotate.Angle;
3269 3269
                                }
3270 3270
                                //}
3271 3271
                            }
......
3292 3292
                                    currentControl.SetValue(TextControl.CanvasYProperty, canvasDrawingMouseDownPoint.Y);
3293 3293
                                    
3294 3294
                                    (currentControl as TextControl).ControlType_No = 0;
3295
                                    (currentControl as TextControl).Angle -= rotate.Angle;
3295
                                    (currentControl as TextControl).CommentAngle -= rotate.Angle;
3296 3296
                                    (currentControl as TextControl).IsHighLight = ViewerDataModel.Instance.checkHighShape;
3297 3297
                                    (currentControl as TextControl).ApplyTemplate();
3298 3298
                                    (currentControl as TextControl).Base_TextBox.Focus();
......
3323 3323
                                    currentControl.SetValue(TextControl.CanvasYProperty, canvasDrawingMouseDownPoint.Y);
3324 3324
                                    
3325 3325
                                    (currentControl as TextControl).ControlType_No = 1;
3326
                                    (currentControl as TextControl).Angle = Ang;
3326
                                    (currentControl as TextControl).CommentAngle = Ang;
3327 3327
                                    (currentControl as TextControl).IsHighLight = ViewerDataModel.Instance.checkHighShape;
3328 3328
                                    (currentControl as TextControl).ApplyTemplate();
3329 3329
                                    (currentControl as TextControl).Base_TextBox.Focus();
......
3354 3354
                                    currentControl.SetValue(TextControl.CanvasXProperty, canvasDrawingMouseDownPoint.X);
3355 3355
                                    currentControl.SetValue(TextControl.CanvasYProperty, canvasDrawingMouseDownPoint.Y);                                    
3356 3356

  
3357
                                    (currentControl as TextControl).Angle = Ang;
3357
                                    (currentControl as TextControl).CommentAngle = Ang;
3358 3358
                                    (currentControl as TextControl).ControlType_No = 2;
3359 3359
                                    (currentControl as TextControl).IsHighLight = ViewerDataModel.Instance.checkHighShape;
3360 3360
                                    (currentControl as TextControl).ApplyTemplate();
......
3402 3402
                                        (currentControl as ArrowTextControl).isHighLight = ViewerDataModel.Instance.checkHighShape;
3403 3403

  
3404 3404
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정 
3405
                                        (currentControl as ArrowTextControl).Angle -= rotate.Angle;
3405
                                        (currentControl as ArrowTextControl).CommentAngle -= rotate.Angle;
3406 3406

  
3407 3407
                                        (currentControl as ArrowTextControl).ApplyTemplate();
3408 3408
                                        (currentControl as ArrowTextControl).Base_TextBox.Focus();
......
3455 3455
                                    (currentControl as ArrowTextControl).isHighLight = ViewerDataModel.Instance.checkHighShape;
3456 3456

  
3457 3457
                                    //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정 
3458
                                    (currentControl as ArrowTextControl).Angle -= rotate.Angle;
3458
                                    (currentControl as ArrowTextControl).CommentAngle -= rotate.Angle;
3459 3459

  
3460 3460
                                    (currentControl as ArrowTextControl).ApplyTemplate();
3461 3461
                                    (currentControl as ArrowTextControl).Base_TextBox.Focus();
......
3505 3505
                                        (currentControl as ArrowTextControl).TextSize = ViewerDataModel.Instance.TextSize;
3506 3506
                                        (currentControl as ArrowTextControl).SetFontFamily(new FontFamily(this.ParentOfType<MainWindow>().dzTopMenu.comboFontFamily.Text));
3507 3507
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정 
3508
                                        (currentControl as ArrowTextControl).Angle -= rotate.Angle;
3508
                                        (currentControl as ArrowTextControl).CommentAngle -= rotate.Angle;
3509 3509
                                        (currentControl as ArrowTextControl).ApplyTemplate();
3510 3510
                                        (currentControl as ArrowTextControl).Base_TextBox.Focus();
3511 3511
                                        ViewerDataModel.Instance.AngleVisibility = Visibility.Visible;                                    
......
3558 3558
                                        (currentControl as ArrowTextControl).isHighLight = ViewerDataModel.Instance.checkHighShape;
3559 3559
                                     
3560 3560
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정  
3561
                                        (currentControl as ArrowTextControl).Angle -= rotate.Angle;
3561
                                        (currentControl as ArrowTextControl).CommentAngle -= rotate.Angle;
3562 3562
                                        (currentControl as ArrowTextControl).ApplyTemplate();
3563 3563
                                        (currentControl as ArrowTextControl).SetFontFamily(new FontFamily(this.ParentOfType<MainWindow>().dzTopMenu.comboFontFamily.Text));
3564 3564
                                        (currentControl as ArrowTextControl).Base_TextBox.Focus();                                 
......
3610 3610
                                        (currentControl as ArrowTextControl).isHighLight = ViewerDataModel.Instance.checkHighShape;
3611 3611
                                        (currentControl as ArrowTextControl).SetFontFamily(new FontFamily(this.ParentOfType<MainWindow>().dzTopMenu.comboFontFamily.Text));
3612 3612
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정  
3613
                                        (currentControl as ArrowTextControl).Angle -= rotate.Angle;
3613
                                        (currentControl as ArrowTextControl).CommentAngle -= rotate.Angle;
3614 3614
                                    
3615 3615
                                        (currentControl as ArrowTextControl).ApplyTemplate();
3616 3616
                                        (currentControl as ArrowTextControl).Base_TextBox.Focus();
......
3660 3660
                                        (currentControl as ArrowTextControl).isHighLight = ViewerDataModel.Instance.checkHighShape;
3661 3661

  
3662 3662
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정 
3663
                                        (currentControl as ArrowTextControl).Angle -= rotate.Angle;
3663
                                        (currentControl as ArrowTextControl).CommentAngle -= rotate.Angle;
3664 3664
                                        (currentControl as ArrowTextControl).SetFontFamily(new FontFamily(this.ParentOfType<MainWindow>().dzTopMenu.comboFontFamily.Text));
3665 3665
                                        (currentControl as ArrowTextControl).ApplyTemplate();
3666 3666
                                        (currentControl as ArrowTextControl).Base_TextBox.Focus();
......
3727 3727
                                        ViewerDataModel.Instance.MarkupControls_USER.Add(currentControl);
3728 3728

  
3729 3729
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정 
3730
                                        (currentControl as SignControl).Angle -= rotate.Angle;                                    
3730
                                        (currentControl as SignControl).CommentAngle -= rotate.Angle;                                    
3731 3731
                                }
3732 3732
                                //}
3733 3733
                            }
......
3811 3811
                                    ViewerDataModel.Instance.MarkupControls_USER.Add(currentControl);
3812 3812

  
3813 3813
                                    //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정  
3814
                                    (currentControl as SymControl).Angle -= rotate.Angle;
3814
                                    (currentControl as SymControl).CommentAngle -= rotate.Angle;
3815 3815
                                }
3816 3816
                                //}
3817 3817
                            }
......
3852 3852
                                        currentControl.CommentID = Commons.shortGuid();
3853 3853
                                        ViewerDataModel.Instance.MarkupControls_USER.Add(currentControl);
3854 3854
                                        //20180903 LJY 회전된 방향으로 화면에 출력되지 않는 문제 수정  
3855
                                        (currentControl as SymControlN).Angle -= rotate.Angle;
3855
                                        (currentControl as SymControlN).CommentAngle -= rotate.Angle;
3856 3856
                                }                                    
3857 3857
                                //}
3858 3858
                            }
......
3884 3884
                        }
3885 3885
                        break;
3886 3886
                }
3887

  
3888
                if(currentControl != null)
3889
                {
3890
                    currentControl.PageAngle = pageNavigator.CurrentPage.Angle;
3891
                }
3887 3892
            }
3888 3893
            if (mouseHandlingMode != MouseHandlingMode.None && e.LeftButton == MouseButtonState.Pressed)
3889 3894
            {
......
5296 5301

  
5297 5302
                    PolygonControl pc = new PolygonControl()
5298 5303
                    {
5299
                        Angle = 0,
5304
                        CommentAngle = 0,
5300 5305
                        PointSet = inkPointSet,
5301 5306
                        ControlType = ControlType.Ink
5302 5307
                    };
......
5376 5381

  
5377 5382
        private void UserControl_LayoutUpdated(object sender, EventArgs e)
5378 5383
        {
5379
            System.Diagnostics.Debug.WriteLine("layupdated");
5380 5384
            if (Common.ViewerDataModel.Instance.MarkupControls_USER?.Count() > 0)
5381 5385
            {
5382 5386
                ViewerDataModel.Instance.OnLoadPage();
MarkupTest/App.xaml
1
<Application x:Class="MarkupTest.App"
2
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
             xmlns:local="clr-namespace:MarkupTest"
5
             StartupUri="MainWindow.xaml">
6
    <Application.Resources>
7
         
8
    </Application.Resources>
9
</Application>
MarkupTest/App.xaml.cs
1
using System;
2
using System.Collections.Generic;
3
using System.Configuration;
4
using System.Data;
5
using System.Linq;
6
using System.Threading.Tasks;
7
using System.Windows;
8

  
9
namespace MarkupTest
10
{
11
    /// <summary>
12
    /// App.xaml에 대한 상호 작용 논리
13
    /// </summary>
14
    public partial class App : Application
15
    {
16
    }
17
}
MarkupTest/MainWindow.xaml
1
<Window x:Class="MarkupTest.MainWindow"
2
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6
        xmlns:local="clr-namespace:MarkupTest"
7
        mc:Ignorable="d"
8
         xmlns:Text="clr-namespace:MarkupToPDF.Controls.Text;assembly=MarkupToPDF"
9
        Title="MainWindow" Height="450" Width="800">
10
    <Canvas>
11
        <Text:ArrowTextControl Width="213" Height="160" Canvas.Top="10">
12
            <Text:ArrowTextControl.Style>
13
                <Style TargetType="{x:Type Text:ArrowTextControl}">
14
                    <Setter Property="Template">
15
                        <Setter.Value>
16
                            <ControlTemplate TargetType="{x:Type Text:ArrowTextControl}">
17
                                <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
18
                                    <Path x:Name="PART_ArrowPath"  Canvas.ZIndex="0"
19
                                  Stroke="{TemplateBinding StrokeColor}"
20
						          StrokeThickness="{TemplateBinding LineSize}" 
21
                                  Data="{TemplateBinding PathData}"
22
                                  Fill="{TemplateBinding StrokeColor}"/>
23
                                    <Path x:Name="PART_ArrowSubPath"  Canvas.ZIndex="2"
24
                                      Stroke="{TemplateBinding StrokeColor}"
25
						              StrokeThickness="{TemplateBinding LineSize}"  
26
                                      Fill="{TemplateBinding SubPathFill }"
27
                                      Data="{TemplateBinding SubPathData}"
28
                                      RenderTransformOrigin="0,0"/>
29
                                    <Path 
30
                                      Stroke="Transparent"
31
                                      Fill="{TemplateBinding BackInnerColor }" Canvas.ZIndex="1"
32
                                      Data="m1.99999,-0.54687c0,0 3.10617,1.97499 21.28572,15.31915c30.03604,22.04707 66.51786,53.61702 101.10715,81.70213l21.28572,17.87234l5.32143,5.10638"
33
                                      RenderTransformOrigin="0,0"/>
34
                                 <TextBox x:Name="PART_ArrowTextBox"  
35
                                         Margin="0.5" Canvas.ZIndex="4"
36
                                         Background="{TemplateBinding TextBoxBackground}"
37
                                         BorderThickness="{TemplateBinding BorderSize}" 
38
                                         BorderBrush="{TemplateBinding StrokeColor}"
39
                                         FontSize="{TemplateBinding TextSize}" 
40
                                         FontFamily="{TemplateBinding TextFamily}"
41
                                         FontStyle="{TemplateBinding TextStyle}"
42
								         FontWeight="{TemplateBinding TextWeight}"
43
                                         TextDecorations="{TemplateBinding UnderLine}"
44
                                         AcceptsReturn="True" 
45
                                         Foreground="{TemplateBinding StrokeColor}" 
46
                                         HorizontalAlignment="Stretch"
47
                                         TextWrapping="Wrap" 
48
                                         Text="test" Width="100"
49
                                         RenderTransformOrigin="0.5,0.5">
50
                                        <TextBox.RenderTransform>
51
                                            <RotateTransform Angle="0"
52
                                                        CenterX="{Binding CenterX, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
53
                                                        CenterY="{Binding CenterY, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
54
                                            </RotateTransform>
55
                                            <!--<RotateTransform Angle="{Binding PageAngle, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
56
                                                        CenterX="{Binding CenterX, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
57
                                                        CenterY="{Binding CenterY, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
58
                                </RotateTransform>-->
59
                                        </TextBox.RenderTransform>
60
                                    </TextBox>
61

  
62
                                    <Canvas Canvas.ZIndex="5">
63

  
64
                                        <Border x:Name="Caret" 
65
                                            Visibility="Collapsed"
66
                                            Canvas.Left="0" 
67
                                            Canvas.Top="0" 
68
                                            Width="3" 
69
                                            Height="33" 
70
                                            Background="Red"
71
                                           
72
                                            RenderTransformOrigin="0.5,0.5">
73
                                            <Border.RenderTransform>
74
                                                <RotateTransform Angle="0"
75
                                                                CenterX="{Binding CenterX, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
76
                                                                CenterY="{Binding CenterY, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
77
                                                </RotateTransform>
78
                                                <!--<RotateTransform Angle="{Binding CommentAngle, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
79
                                                                CenterX="{Binding CenterX, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
80
                                                                CenterY="{Binding CenterY, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
81
                                    </RotateTransform>-->
82
                                            </Border.RenderTransform>
83
                                            <Border.Triggers>
84
                                                <EventTrigger RoutedEvent="Border.Loaded">
85
                                                    <BeginStoryboard>
86
                                                        <Storyboard  x:Name="CaretStoryBoard" 
87
                                                                     RepeatBehavior="Forever">
88
                                                            <ColorAnimationUsingKeyFrames 
89
                                                                    Storyboard.TargetProperty="Background.Color"
90
                                                                    Duration="0:0:0:1"
91
                                                                    FillBehavior="HoldEnd">
92
                                                                <ColorAnimationUsingKeyFrames.KeyFrames >
93
                                                                    <DiscreteColorKeyFrame KeyTime="0:0:0.750" Value="Transparent" />
94
                                                                    <DiscreteColorKeyFrame KeyTime="0:0:0.000" Value="Black"/>
95
                                                                </ColorAnimationUsingKeyFrames.KeyFrames>
96
                                                            </ColorAnimationUsingKeyFrames>
97
                                                        </Storyboard>
98
                                                    </BeginStoryboard>
99
                                                </EventTrigger>
100
                                            </Border.Triggers>
101
                                        </Border>
102
                                    </Canvas>
103

  
104

  
105
                                </Canvas>
106
                            </ControlTemplate>
107
                        </Setter.Value>
108
                    </Setter>
109
                </Style>
110
            </Text:ArrowTextControl.Style>
111
        </Text:ArrowTextControl>
112
    </Canvas>
113
</Window>
MarkupTest/MainWindow.xaml.cs
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.Windows;
7
using System.Windows.Controls;
8
using System.Windows.Data;
9
using System.Windows.Documents;
10
using System.Windows.Input;
11
using System.Windows.Media;
12
using System.Windows.Media.Imaging;
13
using System.Windows.Navigation;
14
using System.Windows.Shapes;
15

  
16
namespace MarkupTest
17
{
18
    /// <summary>
19
    /// MainWindow.xaml에 대한 상호 작용 논리
20
    /// </summary>
21
    public partial class MainWindow : Window
22
    {
23
        public MainWindow()
24
        {
25
            InitializeComponent();
26
        }
27
    }
28
}
MarkupTest/MarkupTest.csproj
1
<?xml version="1.0" encoding="utf-8"?>
2
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4
  <PropertyGroup>
5
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7
    <ProjectGuid>{9466FF0C-EBD2-4FEE-960C-6D5C87C6D60C}</ProjectGuid>
8
    <OutputType>WinExe</OutputType>
9
    <RootNamespace>MarkupTest</RootNamespace>
10
    <AssemblyName>MarkupTest</AssemblyName>
11
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
12
    <FileAlignment>512</FileAlignment>
13
    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
14
    <WarningLevel>4</WarningLevel>
15
    <Deterministic>true</Deterministic>
16
    <TargetFrameworkProfile />
17
  </PropertyGroup>
18
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
19
    <PlatformTarget>AnyCPU</PlatformTarget>
20
    <DebugSymbols>true</DebugSymbols>
21
    <DebugType>full</DebugType>
22
    <Optimize>false</Optimize>
23
    <OutputPath>bin\Debug\</OutputPath>
24
    <DefineConstants>DEBUG;TRACE</DefineConstants>
25
    <ErrorReport>prompt</ErrorReport>
26
    <WarningLevel>4</WarningLevel>
27
    <Prefer32Bit>false</Prefer32Bit>
28
  </PropertyGroup>
29
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
30
    <PlatformTarget>AnyCPU</PlatformTarget>
31
    <DebugType>pdbonly</DebugType>
32
    <Optimize>true</Optimize>
33
    <OutputPath>bin\Release\</OutputPath>
34
    <DefineConstants>TRACE</DefineConstants>
35
    <ErrorReport>prompt</ErrorReport>
36
    <WarningLevel>4</WarningLevel>
37
  </PropertyGroup>
38
  <ItemGroup>
39
    <Reference Include="System" />
40
    <Reference Include="System.Data" />
41
    <Reference Include="System.Xml" />
42
    <Reference Include="Microsoft.CSharp" />
43
    <Reference Include="System.Core" />
44
    <Reference Include="System.Xml.Linq" />
45
    <Reference Include="System.Data.DataSetExtensions" />
46
    <Reference Include="System.Net.Http" />
47
    <Reference Include="System.Xaml">
48
      <RequiredTargetFramework>4.0</RequiredTargetFramework>
49
    </Reference>
50
    <Reference Include="WindowsBase" />
51
    <Reference Include="PresentationCore" />
52
    <Reference Include="PresentationFramework" />
53
  </ItemGroup>
54
  <ItemGroup>
55
    <ApplicationDefinition Include="App.xaml">
56
      <Generator>MSBuild:Compile</Generator>
57
      <SubType>Designer</SubType>
58
    </ApplicationDefinition>
59
    <Page Include="MainWindow.xaml">
60
      <Generator>MSBuild:Compile</Generator>
61
      <SubType>Designer</SubType>
62
    </Page>
63
    <Compile Include="App.xaml.cs">
64
      <DependentUpon>App.xaml</DependentUpon>
65
      <SubType>Code</SubType>
66
    </Compile>
67
    <Compile Include="MainWindow.xaml.cs">
68
      <DependentUpon>MainWindow.xaml</DependentUpon>
69
      <SubType>Code</SubType>
70
    </Compile>
71
  </ItemGroup>
72
  <ItemGroup>
73
    <Compile Include="Properties\AssemblyInfo.cs">
74
      <SubType>Code</SubType>
75
    </Compile>
76
    <Compile Include="Properties\Resources.Designer.cs">
77
      <AutoGen>True</AutoGen>
78
      <DesignTime>True</DesignTime>
79
      <DependentUpon>Resources.resx</DependentUpon>
80
    </Compile>
81
    <Compile Include="Properties\Settings.Designer.cs">
82
      <AutoGen>True</AutoGen>
83
      <DependentUpon>Settings.settings</DependentUpon>
84
      <DesignTimeSharedInput>True</DesignTimeSharedInput>
85
    </Compile>
86
    <EmbeddedResource Include="Properties\Resources.resx">
87
      <Generator>ResXFileCodeGenerator</Generator>
88
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
89
    </EmbeddedResource>
90
    <None Include="Properties\Settings.settings">
91
      <Generator>SettingsSingleFileGenerator</Generator>
92
      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
93
    </None>
94
  </ItemGroup>
95
  <ItemGroup>
96
    <None Include="App.config" />
97
  </ItemGroup>
98
  <ItemGroup>
99
    <ProjectReference Include="..\MarkupToPDF\MarkupToPDF.csproj">
100
      <Project>{a714bd67-8aac-4ed8-8ecf-7853c3549a68}</Project>
101
      <Name>MarkupToPDF</Name>
102
    </ProjectReference>
103
  </ItemGroup>
104
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
105
</Project>
MarkupTest/Properties/AssemblyInfo.cs
1
using System.Reflection;
2
using System.Resources;
3
using System.Runtime.CompilerServices;
4
using System.Runtime.InteropServices;
5
using System.Windows;
6

  
7
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 
8
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
9
// 이러한 특성 값을 변경하세요.
10
[assembly: AssemblyTitle("MarkupTest")]
11
[assembly: AssemblyDescription("")]
12
[assembly: AssemblyConfiguration("")]
13
[assembly: AssemblyCompany("")]
14
[assembly: AssemblyProduct("MarkupTest")]
15
[assembly: AssemblyCopyright("Copyright ©  2019")]
16
[assembly: AssemblyTrademark("")]
17
[assembly: AssemblyCulture("")]
18

  
19
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 
20
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
21
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
22
[assembly: ComVisible(false)]
23

  
24
//지역화 가능 응용 프로그램 빌드를 시작하려면 다음을 설정하세요.
25
//.csproj 파일에서 <PropertyGroup> 내에 <UICulture>CultureYouAreCodingWith</UICulture>를
26
//설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
27
//사용하는 경우 <UICulture>를 en-US로 설정합니다. 그런 다음 아래
28
//NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
29
//프로젝트 파일의 UICulture 설정과 일치시킵니다.
30

  
31
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
32

  
33

  
34
[assembly: ThemeInfo(
35
    ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
36
                                     //(페이지 또는 응용 프로그램 리소스 사진에
37
                                     // 리소스가 없는 경우에 사용됨)
38
    ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
39
                                              //(페이지 또는 응용 프로그램 리소스 사진에
40
                                              // 리소스가 없는 경우에 사용됨)
41
)]
42

  
43

  
44
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
45
//
46
//      주 버전
47
//      부 버전 
48
//      빌드 번호
49
//      수정 버전
50
//
51
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
52
// 지정되도록 할 수 있습니다.
53
// [assembly: AssemblyVersion("1.0.*")]
54
[assembly: AssemblyVersion("1.0.0.0")]
55
[assembly: AssemblyFileVersion("1.0.0.0")]
MarkupTest/Properties/Resources.Designer.cs
1
//------------------------------------------------------------------------------
2
// <auto-generated>
3
//     이 코드는 도구를 사용하여 생성되었습니다.
4
//     런타임 버전:4.0.30319.42000
5
//
6
//     파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7
//     이러한 변경 내용이 손실됩니다.
8
// </auto-generated>
9
//------------------------------------------------------------------------------
10

  
11
namespace MarkupTest.Properties {
12
    using System;
13
    
14
    
15
    /// <summary>
16
    ///   지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
17
    /// </summary>
18
    // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
19
    // 클래스에서 자동으로 생성되었습니다.
20
    // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
21
    // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
22
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
23
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25
    internal class Resources {
26
        
27
        private static global::System.Resources.ResourceManager resourceMan;
28
        
29
        private static global::System.Globalization.CultureInfo resourceCulture;
30
        
31
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32
        internal Resources() {
33
        }
34
        
35
        /// <summary>
36
        ///   이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
37
        /// </summary>
38
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39
        internal static global::System.Resources.ResourceManager ResourceManager {
40
            get {
41
                if (object.ReferenceEquals(resourceMan, null)) {
42
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MarkupTest.Properties.Resources", typeof(Resources).Assembly);
43
                    resourceMan = temp;
44
                }
45
                return resourceMan;
46
            }
47
        }
48
        
49
        /// <summary>
50
        ///   이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
51
        ///   재정의합니다.
52
        /// </summary>
53
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54
        internal static global::System.Globalization.CultureInfo Culture {
55
            get {
56
                return resourceCulture;
57
            }
58
            set {
59
                resourceCulture = value;
60
            }
61
        }
62
    }
63
}
MarkupTest/Properties/Resources.resx
1
<?xml version="1.0" encoding="utf-8"?>
2
<root>
3
  <!-- 
4
    Microsoft ResX Schema 
5
    
6
    Version 2.0
7
    
8
    The primary goals of this format is to allow a simple XML format 
9
    that is mostly human readable. The generation and parsing of the 
10
    various data types are done through the TypeConverter classes 
11
    associated with the data types.
12
    
13
    Example:
14
    
15
    ... ado.net/XML headers & schema ...
16
    <resheader name="resmimetype">text/microsoft-resx</resheader>
17
    <resheader name="version">2.0</resheader>
18
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
        <value>[base64 mime encoded serialized .NET Framework object]</value>
24
    </data>
25
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
        <comment>This is a comment</comment>
28
    </data>
29
                
30
    There are any number of "resheader" rows that contain simple 
31
    name/value pairs.
32
    
33
    Each data row contains a name, and value. The row also contains a 
34
    type or mimetype. Type corresponds to a .NET class that support 
35
    text/value conversion through the TypeConverter architecture. 
36
    Classes that don't support this are serialized and stored with the 
37
    mimetype set.
38
    
39
    The mimetype is used for serialized objects, and tells the 
40
    ResXResourceReader how to depersist the object. This is currently not 
41
    extensible. For a given mimetype the value must be set accordingly:
42
    
43
    Note - application/x-microsoft.net.object.binary.base64 is the format 
44
    that the ResXResourceWriter will generate, however the reader can 
45
    read any of the formats listed below.
46
    
47
    mimetype: application/x-microsoft.net.object.binary.base64
48
    value   : The object must be serialized with 
49
            : System.Serialization.Formatters.Binary.BinaryFormatter
50
            : and then encoded with base64 encoding.
51
    
52
    mimetype: application/x-microsoft.net.object.soap.base64
53
    value   : The object must be serialized with 
54
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
            : and then encoded with base64 encoding.
56

  
57
    mimetype: application/x-microsoft.net.object.bytearray.base64
58
    value   : The object must be serialized into a byte array 
59
            : using a System.ComponentModel.TypeConverter
60
            : and then encoded with base64 encoding.
61
    -->
62
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
    <xsd:element name="root" msdata:IsDataSet="true">
64
      <xsd:complexType>
65
        <xsd:choice maxOccurs="unbounded">
66
          <xsd:element name="metadata">
67
            <xsd:complexType>
68
              <xsd:sequence>
69
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
70
              </xsd:sequence>
71
              <xsd:attribute name="name" type="xsd:string" />
72
              <xsd:attribute name="type" type="xsd:string" />
73
              <xsd:attribute name="mimetype" type="xsd:string" />
74
            </xsd:complexType>
75
          </xsd:element>
76
          <xsd:element name="assembly">
77
            <xsd:complexType>
78
              <xsd:attribute name="alias" type="xsd:string" />
79
              <xsd:attribute name="name" type="xsd:string" />
80
            </xsd:complexType>
81
          </xsd:element>
82
          <xsd:element name="data">
83
            <xsd:complexType>
84
              <xsd:sequence>
85
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
86
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
87
              </xsd:sequence>
88
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
89
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
90
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
91
            </xsd:complexType>
92
          </xsd:element>
93
          <xsd:element name="resheader">
94
            <xsd:complexType>
95
              <xsd:sequence>
96
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
97
              </xsd:sequence>
98
              <xsd:attribute name="name" type="xsd:string" use="required" />
99
            </xsd:complexType>
100
          </xsd:element>
101
        </xsd:choice>
102
      </xsd:complexType>
103
    </xsd:element>
104
  </xsd:schema>
105
  <resheader name="resmimetype">
106
    <value>text/microsoft-resx</value>
107
  </resheader>
108
  <resheader name="version">
109
    <value>2.0</value>
110
  </resheader>
111
  <resheader name="reader">
112
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
113
  </resheader>
114
  <resheader name="writer">
115
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
  </resheader>
117
</root>
MarkupTest/Properties/Settings.Designer.cs
1
//------------------------------------------------------------------------------
2
// <auto-generated>
3
//     이 코드는 도구를 사용하여 생성되었습니다.
4
//     런타임 버전:4.0.30319.42000
5
//
6
//     파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7
//     이러한 변경 내용이 손실됩니다.
8
// </auto-generated>
9
//------------------------------------------------------------------------------
10

  
11
namespace MarkupTest.Properties {
12
    
13
    
14
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
16
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17
        
18
        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19
        
20
        public static Settings Default {
21
            get {
22
                return defaultInstance;
23
            }
24
        }
25
    }
26
}
MarkupTest/Properties/Settings.settings
1
<?xml version='1.0' encoding='utf-8'?>
2
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
3
  <Profiles>
4
    <Profile Name="(Default)" />
5
  </Profiles>
6
  <Settings />
7
</SettingsFile>
MarkupToPDF/Common/CommentUserInfo.cs
103 103
        /// </summary>
104 104
        public virtual ControlType ControlType { get; set; }
105 105

  
106
        private double _CommentAngle;
107

  
106 108
        /// <summary>
107
        /// subclass has to override this property
109
        /// 컨트롤의 ANGLE
108 110
        /// </summary>
109
        public virtual double Angle { get; set; }
111
        public virtual double CommentAngle
112
        {
113
            get { return _CommentAngle; }
114
            set {
115
                _CommentAngle = value;
116
                System.Diagnostics.Debug.WriteLine($"CommentInfo CommentAngle {value}");
117
            }
118
        }
119

  
120
        private double _PageAngle;
121

  
122
        /// <summary>
123
        /// 실제 저장된 Page의 ANGLE
124
        /// DB에 저장됨
125
        /// </summary>
126
        public virtual double PageAngle
127
        {
128
            get { return _PageAngle; }
129
            set
130
            {
131
                _PageAngle = value;
132
                System.Diagnostics.Debug.WriteLine($"CommentInfo PageAngle {value}");
133
            }
134
        }
135

  
136
        private double _VisualPageAngle;
137

  
138
        /// <summary>
139
        /// Display되는 Page의 ANGLE
140
        /// PageAngle에서 변형됨
141
        /// </summary>
142
        public virtual double VisualPageAngle
143
        {
144
            get { return _VisualPageAngle; }
145
            set
146
            {
147
                _VisualPageAngle = value;
148
                //System.Diagnostics.Debug.WriteLine($"CommentInfo VisualPageAngle {value}");
149
            }
150
        }
110 151

  
111 152
        public virtual SolidColorBrush StrokeColor { get; set; }
112 153

  
MarkupToPDF/Controls/Cad/ClipWhiteControlcs.cs
262 262
            }
263 263
        }
264 264

  
265
        public double Angle
265
        public double CommentAngle
266 266
        {
267 267
            get { return (double)GetValue(AngleProperty); }
268 268
            set
269 269
            {
270
                if (this.Angle != value)
270
                if (this.CommentAngle != value)
271 271
                {
272 272
                    SetValue(AngleProperty, value);
273 273
                }
......
641 641
                    Paint = s.PaintState,
642 642
                    StartPoint = s.StartPoint,
643 643
                    EndPoint = s.EndPoint,
644
                    Angle = s.Angle,
644
                    CommentAngle = s.Angle,
645 645
                    StrokeColor = Brushes.White,
646 646
                    DashSize = s.DashSize,
647 647
                    Opacity = s.Opac,
MarkupToPDF/Controls/Cad/CoordinateControl.cs
262 262
            }
263 263
        }
264 264

  
265
        public double Angle
265
        public double CommentAngle
266 266
        {
267 267
            get { return (double)GetValue(AngleProperty); }
268 268
            set
269 269
            {
270
                if (this.Angle != value)
270
                if (this.CommentAngle != value)
271 271
                {
272 272
                    SetValue(AngleProperty, value);
273 273
                }
......
640 640
                    Paint = s.PaintState,
641 641
                    StartPoint = s.StartPoint,
642 642
                    EndPoint = s.EndPoint,
643
                    Angle = s.Angle,
643
                    CommentAngle = s.Angle,
644 644
                    StrokeColor = Brushes.Yellow,
645 645
                    DashSize = s.DashSize,
646 646
                    Opacity = s.Opac,
MarkupToPDF/Controls/Cad/InsideWhiteControlcs.cs
262 262
            }
263 263
        }
264 264

  
265
        public double Angle
265
        public double CommentAngle
266 266
        {
267 267
            get { return (double)GetValue(AngleProperty); }
268 268
            set
269 269
            {
270
                if (this.Angle != value)
270
                if (this.CommentAngle != value)
271 271
                {
272 272
                    SetValue(AngleProperty, value);
273 273
                }
......
641 641
                    Paint = s.PaintState,
642 642
                    StartPoint = s.StartPoint,
643 643
                    EndPoint = s.EndPoint,
644
                    Angle = s.Angle,
644
                    CommentAngle = s.Angle,
645 645
                    StrokeColor = Brushes.White,
646 646
                    DashSize = s.DashSize,
647 647
                    Opacity = s.Opac,
MarkupToPDF/Controls/Cad/OverlapWhiteControl.cs
262 262
            }
263 263
        }
264 264

  
265
        public double Angle
265
        public double CommentAngle
266 266
        {
267 267
            get { return (double)GetValue(AngleProperty); }
268 268
            set
269 269
            {
270
                if (this.Angle != value)
270
                if (this.CommentAngle != value)
271 271
                {
272 272
                    SetValue(AngleProperty, value);
273 273
                }
......
641 641
                    Paint = s.PaintState,
642 642
                    StartPoint = s.StartPoint,
643 643
                    EndPoint = s.EndPoint,
644
                    Angle = s.Angle,
644
                    CommentAngle = s.Angle,
645 645
                    StrokeColor = Brushes.White,
646 646
                    DashSize = s.DashSize,
647 647
                    Opacity = s.Opac,
MarkupToPDF/Controls/Common/IMarkupCommonData.cs
38 38

  
39 39
    public interface IShapeControl : IPath
40 40
    {
41
        double Angle { get; set; }
41
        double CommentAngle { get; set; }
42 42
        PaintSet Paint { get; set; }
43 43
        //강인구 추가
44 44
        //DoubleCollection DashSize { get; set; }
MarkupToPDF/Controls/Common/Interfaces.cs
36 36

  
37 37
    public interface IViewBox : IPath
38 38
    {
39
        double Angle { get; set; }
39
        double CommentAngle { get; set; }
40 40
    }
41 41
    public interface ICircleControl : IShapeControl
42 42
    {
MarkupToPDF/Controls/Etc/DateControl.cs
189 189
            }
190 190
        }
191 191

  
192
        public override double Angle
192
        public override double CommentAngle
193 193
        {
194 194
            get { return (double)GetValue(AngleProperty); }
195 195
            set
196 196
            {
197
                if (this.Angle != value)
... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)