private void SelectItem(IPrintableItem item, bool redraw) { const int sizeSelectionMark = 8; this._selectedItem = item; // First, redraw if (redraw) Redraw(); #region Create selection marks if (item != null) { using (Graphics g = Graphics.FromImage(_bmp)) { g.PageUnit = unit; float markHSize = hRuler.Convert(sizeSelectionMark); float markVSize = vRuler.Convert(sizeSelectionMark); // Calculates selection edges _selectionEdges = new RectangleF[8]; _selectionEdges[(int) SelectionEdge.TopLeft] = new RectangleF( item.Location.X - markHSize / 2, item.Location.Y - markVSize / 2, markHSize, markVSize); _selectionEdges[(int) SelectionEdge.TopRight] = new RectangleF( item.Location.X - markHSize / 2 + item.Location.Width, item.Location.Y - markVSize / 2, markHSize, markVSize); _selectionEdges[(int) SelectionEdge.BottomRight] = new RectangleF( item.Location.X - markHSize / 2 + item.Location.Width, item.Location.Y - markVSize / 2 + item.Location.Height, markHSize, markVSize); _selectionEdges[(int) SelectionEdge.BottomLeft] = new RectangleF( item.Location.X - markHSize / 2, item.Location.Y - markVSize / 2 + item.Location.Height, markHSize, markVSize); _selectionEdges[(int) SelectionEdge.MiddleLeft] = new RectangleF( item.Location.X - markHSize / 2, item.Location.Y + item.Location.Height / 2 - markVSize / 2, markHSize, markVSize); _selectionEdges[(int) SelectionEdge.TopMiddle] = new RectangleF( item.Location.X + item.Location.Width / 2 - markHSize / 2, item.Location.Y - markVSize / 2, markHSize, markVSize); _selectionEdges[(int) SelectionEdge.MiddleRight] = new RectangleF( item.Location.X + item.Location.Width - markHSize / 2, item.Location.Y + item.Location.Height / 2 - markVSize / 2, markHSize, markVSize); _selectionEdges[(int) SelectionEdge.BottomMiddle] = new RectangleF( item.Location.X + item.Location.Width / 2 - markHSize / 2, item.Location.Y + item.Location.Height - markVSize / 2, markHSize, markVSize); // Draw selection mark g.FillRectangle(selectedItemBrush, item.Location); foreach (RectangleF mark in _selectionEdges) g.FillRectangle(Brushes.Black, mark); Refresh(); _selectable = true; } } #endregion if (SelectedItemChanged != null) SelectedItemChanged(this, item); }
/// <summary> /// Create a border /// </summary> /// <param name="container">Container</param> public Border(IPrintableItem container) { owner = container; }
/// <summary> /// Selects an item /// </summary> /// <param name="item">Item to select</param> private void SelectItem(IPrintableItem item) { SelectItem(item, true); Focus(); }