private void form_HitTestAdjustmentHandles(object sender, HitTestEventArgs e) { var node = e.Item as DiagramNode; var size = new Size( form.AdjustmentHandlesSize, form.AdjustmentHandlesSize);
Rect r = e.Item.GetBounds();
if (r.Contains(e.MousePosition))
e.HitResult = 8;
if (node != null) { var location = node.Bounds.Location; var diagOffset = new Vector(location.X, location.Y);
var TopLeft = new Point(0, 0); var TopLeftRect = new Rect(TopLeft, size); if (TopLeftRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 0;
var TopMiddle = new Point(node.Bounds.Width / 2 - size.Width / 2, 0); var TopMiddleRect = new Rect(TopMiddle, size); if (TopMiddleRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 4;
var TopRight = new Point(node.Bounds.Width - size.Width, 0); var TopRightRect = new Rect(TopRight, size); if (TopRightRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 1;
var MiddleLeft = new Point(0, node.Bounds.Height / 2 - size.Height / 2); var MiddleLeftRect = new Rect(MiddleLeft, size); if (MiddleLeftRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 7;
var MiddleRight = new Point(node.Bounds.Width - size.Width, node.Bounds.Height / 2 - size.Height / 2); var MiddleRightRect = new Rect(MiddleRight, size); if (MiddleRightRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 5;
var bottomLeft = new Point(0, node.Bounds.Height - size.Height); var bottomLeftRect = new Rect(bottomLeft, size); if (bottomLeftRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 3;
var bottomMiddle = new Point(node.Bounds.Width / 2 - size.Width / 2, node.Bounds.Height - size.Height); var bottomMiddleRect = new Rect(bottomMiddle, size); if (bottomMiddleRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 6;
var bottomRight = new Point(node.Bounds.Width - size.Width, node.Bounds.Height - size.Height); var bottomRightRect = new Rect(bottomRight, size); if (bottomRightRect.Contains(e.MousePosition - diagOffset)) e.HitResult = 2; } }
void form_DrawAdjustmentHandles(object sender, DrawItemEventArgs e) { var node = e.Item as DiagramNode; var size = new Size(form.AdjustmentHandlesSize,form.AdjustmentHandlesSize);
if (node != null) { var TopLeft = new Point(0, 0); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(TopLeft, size));
var TopMiddle = new Point(node.Bounds.Width / 2 - size.Width / 2, 0); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(TopMiddle, size));
var TopRight = new Point(node.Bounds.Width - size.Width , 0); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(TopRight, size));
var MiddleTop = new Point(0, node.Bounds.Height /2 - size.Height /2); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(MiddleTop, size));
var MiddleBott = new Point(node.Bounds.Width - size.Width, node.Bounds.Height / 2 - size.Height / 2); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(MiddleBott, size));
var bottomLeft = new Point(0, node.Bounds.Height - size.Height); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(bottomLeft, size)); var bottomMiddle = new Point(node.Bounds.Width / 2 - size.Width / 2,node.Bounds.Height - size.Height); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(bottomMiddle, size));
var bottomRight = new Point(node.Bounds.Width - size.Width ,node.Bounds.Height - size.Height); e.Graphics.DrawRectangle(form.SelectedItemHandlesStyle.PatternBrush, form.SelectedItemHandlesStyle.DashPen, new Rect(bottomRight, size));
} }
|