Esempio n. 1
0
        public void DrawMask(FastBitmap fbmp)
        {
            PointF[] points = stage.TransformPointsCamera;
            PointF[] allPts = points.GetMidpointsAndCenter();

            if (points != null && points.Length == 4)
            {
                PointF center = stage.RotationCenterToCamera;

                ColorMask baseMask = (transformKind == TransformKind.Scale) ? ColorMask.ScaleTopLeft : ColorMask.RotateTopLeft;

                if (AspectConstrainTarget != BondAttachment.None)
                {
                    uint      handleIndex = (uint)AspectConstrainTarget.GetHandleIndex();
                    ColorMask cm          = (ColorMask)(baseMask + handleIndex);
                    fbmp.AddMaskRect(cm.GetColor(), GetCenterBoundsFromPoint(allPts[handleIndex]));
                }
                else
                {
                    for (uint i = 0; i < 8; i++)
                    {
                        ColorMask cm = (ColorMask)(baseMask + i);
                        fbmp.AddMaskRect(cm.GetColor(), GetCenterBoundsFromPoint(allPts[i]));
                    }

                    if (transformKind == TransformKind.Rotate)
                    {
                        fbmp.AddMaskRect(ColorMask.CenterPoint.GetColor(), GetCenterBoundsFromPoint(allPts[8]));
                    }
                }
            }
        }