프로젝트

일반

사용자정보

개정판 702651f1

ID702651f10c00453ad30540d0b48f3e778fcc0b06
상위 ca7b7b56
하위 e2d3d2dc, efd9be38

백흠경이(가) 11달 전에 추가함

Fix: CircleControl에서 AxisLock이 설정되어 있으면 혹은 Shift Key를 누르면 크기를 정비율로 수정되도록 수정

Change-Id: Id98c151724ffc492e20bbe960f8e46e8ab48b6e1

차이점 보기:

MarkupToPDF/Controls/Shape/CircleControl.cs
489 489
            {
490 490
                newPointSet.Add(_pt);
491 491
            }
492
            var ReverseP = (i + newPointSet.Count() / 2) % newPointSet.Count();
493
            var PreviousP = (i + (newPointSet.Count() - 1)) % newPointSet.Count();
494
            var NextP = (i + 1) % newPointSet.Count();
495
            var distance = MathSet.DistanceTo(newPointSet[ReverseP], newPointSet[i]);
496
            var PreviousV = MathSet.GetNormVectorBetween(newPointSet[ReverseP], newPointSet[PreviousP]);
497
            var l = MathSet.DotProduct(PreviousV.X, PreviousV.Y, newPointSet[i].X - newPointSet[ReverseP].X,
498
                newPointSet[i].Y - newPointSet[ReverseP].Y);
499
            newPointSet[PreviousP] = new Point(newPointSet[ReverseP].X + PreviousV.X * l, newPointSet[ReverseP].Y
500
                + PreviousV.Y * l);
501

  
502
            var NextV = MathSet.GetNormVectorBetween(newPointSet[ReverseP], newPointSet[NextP]);
503
            l = MathSet.DotProduct(NextV.X, NextV.Y, newPointSet[i].X - newPointSet[ReverseP].X, newPointSet[i].Y
504
                - newPointSet[ReverseP].Y);
505
            newPointSet[NextP] = new Point(newPointSet[ReverseP].X + NextV.X * l, newPointSet[ReverseP].Y + NextV.Y * l);
506

  
507
            path.PointSet = newPointSet;
492
            var OppositeP = (i + newPointSet.Count / 2) % newPointSet.Count;
493
            var PreviousP = (i + (newPointSet.Count - 1)) % newPointSet.Count;
494
            var NextP = (i + 1) % newPointSet.Count;
495
            if (bAxisLocked)
496
            {
497
                double _dx = path.PointSet[i].X - path.PointSet[OppositeP].X;
498
                double _dy = path.PointSet[i].Y - path.PointSet[OppositeP].Y;
499
                double distance = Math.Max(Math.Abs(_dx), Math.Abs(_dy));
500

  
501
                var PreviousV = path.PointSet[PreviousP] - path.PointSet[OppositeP];
502
                PreviousV.Normalize();
503
                path.PointSet[PreviousP] = path.PointSet[OppositeP] + PreviousV * distance;
504

  
505
                var NextV = path.PointSet[NextP] - path.PointSet[OppositeP];
506
                NextV.Normalize();
507
                path.PointSet[NextP] = path.PointSet[OppositeP] + NextV * distance;
508

  
509
                path.PointSet[i] = path.PointSet[OppositeP] + PreviousV * distance + NextV * distance;
510
            }
511
            else
512
            {
513
                var PreviousV = MathSet.GetNormVectorBetween(newPointSet[OppositeP], newPointSet[PreviousP]);
514
                var l = MathSet.DotProduct(PreviousV.X, PreviousV.Y, newPointSet[i].X - newPointSet[OppositeP].X,
515
                    newPointSet[i].Y - newPointSet[OppositeP].Y);
516
                newPointSet[PreviousP] = new Point(newPointSet[OppositeP].X + PreviousV.X * l, newPointSet[OppositeP].Y
517
                    + PreviousV.Y * l);
518

  
519
                var NextV = MathSet.GetNormVectorBetween(newPointSet[OppositeP], newPointSet[NextP]);
520
                l = MathSet.DotProduct(NextV.X, NextV.Y, newPointSet[i].X - newPointSet[OppositeP].X, newPointSet[i].Y
521
                    - newPointSet[OppositeP].Y);
522
                newPointSet[NextP] = new Point(newPointSet[OppositeP].X + NextV.X * l, newPointSet[OppositeP].Y + NextV.Y * l);
523

  
524
                path.PointSet = newPointSet;
525
            }
526

  
508 527
            this.UpdateControl();
509 528
        }
510 529

  

내보내기 Unified diff

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