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])); } } } }