Пример #1
0
		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);
		}
Пример #2
0
		/// <summary>
		/// Create a border
		/// </summary>
		/// <param name="container">Container</param>
		public Border(IPrintableItem container)
		{
			owner = container;
		}
Пример #3
0
		/// <summary>
		/// Selects an item
		/// </summary>
		/// <param name="item">Item to select</param>
		private void SelectItem(IPrintableItem item)
		{
			SelectItem(item, true);
			Focus();
		}