⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 designpane.cs

📁 是用c#实现的一个有关于报表设计的程序代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
						DoPaint();

						if(OnMoveFinished!=null)
							OnMoveFinished(this.mSelectedObjects);
					}
				}
			}
		}


		#endregion

		#region Control Overrides

		protected override void OnMouseDown(MouseEventArgs e)
		{		
			DesignPane_MouseDown(this,e);				
		}


		#endregion

		#region Public Functions

		public void ClearSelections()
		{
			this.mSelectedObjects.Clear();
		}


		public void SelectObjects(ArrayList SelectedObjects)
		{
			this.mSelectedObjects.Clear();

			if (SelectedObjects != null)
			{
				if (SelectedObjects.Count > 0)
				{
					foreach (ICustomPaint CurrentObject in SelectedObjects)
					{
						this.mSelectedObjects.Add(CurrentObject);
						selectionRectangle = new TrackerRectangle(CurrentObject.GetRegion(),CurrentObject.HorizontalAlignment, CurrentObject.VerticalAlignment);

						trackerImage = (Bitmap)drawingImage.Clone();
						selectionRectangle.DrawSelectionTrackers((Bitmap)trackerImage);
						PaintImage(trackerImage);
					}
				}
				else
				{
					//selectedObject = null;
					selectionRectangle = null;
					PaintImage(drawingImage);
				}
			} 
			else 
			{
				selectionRectangle = null;
				PaintImage(drawingImage);
			}

			this.Invalidate();
		}


		public void SetSize(PageSettings settings)
		{
			this.Size = new System.Drawing.Size(settings.Bounds.Width, settings.Bounds.Height);
			drawingImage = new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);
			
		}


		public void SetObjects(ICustomPaint[] staticElements,ICustomPaint[] dynamicElements,PageSettings thePageSettings)
		{
			staticObjects = staticElements;
			dynamicObjects = dynamicElements;

			pageSettings = thePageSettings;
			
			//this.Invalidate();
			
		}


		#endregion

		#region Public Properties

		public bool ShowGrid
		{
			get {return showGrid;}
			set 
			{
				showGrid = value;
				CreateBackImage();
				DoPaint();
			}
		}

		
		public int GridSize
		{
			get {return gridSize;}
			set 
			{
				gridSize = value;
				CreateBackImage();
				DoPaint();
			}
		}


		#endregion

		#region Private Functions

		private void CreateBackImage()
		{
			backImage = new Bitmap(gridSize,gridSize);
			Graphics g = Graphics.FromImage(backImage);
			g.FillRectangle(new SolidBrush(this.BackColor),0,0,gridSize,gridSize);
			g.FillEllipse(gridBrush,0,0,2,2);
			g.FillEllipse(gridBrush,0,gridSize,2,2);
			g.FillEllipse(gridBrush,gridSize,0,2,2);
			g.FillEllipse(gridBrush,gridSize,gridSize,2,2);
		}


		private void DesignPane_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
			DoPaint();
		}


		private void DoPaint()
		{
			drawingImage.Dispose();
			drawingImage = new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);

			Graphics g = Graphics.FromImage(drawingImage);

			if (showGrid && gridSize!=0)
			{
				brushBg = new TextureBrush(backImage,WrapMode.Tile);
				g.FillRectangle(brushBg, this.ClientRectangle);
			}
			else
			{
				brushBg = new SolidBrush(this.BackColor);
				g.FillRectangle(brushBg, this.ClientRectangle);
			}

			PaintMargins(g);

			PaintStaticObjects(g);
			PaintDynamicObjects(g);

			brushBg.Dispose();
			g.Dispose();

			PaintImage(drawingImage);
			PaintSelection(g);
		}


		private void MoveSelection(ICustomPaint CurrentObject, int xOrigin,int yOrigin)
		{
			if (CurrentObject.HorizontalAlignment == ICustomPaint.HorizontalAlignmentTypes.None)
					CurrentObject.X = xOrigin;

			if (CurrentObject.VerticalAlignment == ICustomPaint.VerticalAlignmentTypes.None)
				CurrentObject.Y = yOrigin;

			if (CurrentObject.HorizontalAlignment == ICustomPaint.HorizontalAlignmentTypes.None || CurrentObject.VerticalAlignment == ICustomPaint.VerticalAlignmentTypes.None)
			{
				selectionRectangle = new TrackerRectangle(CurrentObject.GetRegion(), CurrentObject.HorizontalAlignment, CurrentObject.VerticalAlignment);

				trackerImage.Dispose();
				trackerImage = (Bitmap)drawingImage.Clone();							
				selectionRectangle.DrawSelectionTrackers((Bitmap)trackerImage);
				PaintImage(trackerImage);
	
				shouldRepaint = true;
			}
		}


		private void PaintDynamicObjects(Graphics g)
		{
			if (dynamicObjects == null) return;

			for (int i=0;i<dynamicObjects.Length;i++)
			{
				dynamicObjects[i].Paint(g);
			}
		}


		private void PaintImage(Image i)
		{	
			Graphics g = this.CreateGraphics();
			g.DrawImage(i, this.ClientRectangle);
			g.Dispose();
		}


		private void PaintMargins(Graphics g)
		{
			if (pageSettings != null)
			{
				Rectangle marginRectangle = new Rectangle(pageSettings.Margins.Left,pageSettings.Margins.Top,this.ClientRectangle.Width-pageSettings.Margins.Right-pageSettings.Margins.Left,this.ClientRectangle.Height-pageSettings.Margins.Bottom-pageSettings.Margins.Top);

				g.DrawRectangle(new Pen(Color.LightGray,1),marginRectangle);
				g.DrawString("margins (not printable)",new Font("Tahoma",8),new SolidBrush(Color.Silver),marginRectangle.X+1,marginRectangle.Y);
			}
		}


		private void PaintSelection(Graphics g)
		{
			if (selectionRectangle == null) return;
			
			foreach (ICustomPaint CurrentObject in this.mSelectedObjects)
			{
				selectionRectangle = new TrackerRectangle(CurrentObject.GetRegion(), CurrentObject.HorizontalAlignment, CurrentObject.VerticalAlignment);

				trackerImage.Dispose();
				trackerImage = new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);
				selectionRectangle.DrawSelectionTrackers((Bitmap)trackerImage);
				PaintImage(trackerImage);
			}
		}


		private void PaintStaticObjects(Graphics g)
		{
			if (staticObjects == null) return;

			for (int i=0;i<staticObjects.Length;i++)
			{
				staticObjects[i].Paint(g);
			}
		}


		#endregion

		#region Private Properties

		private ICustomPaint FindObjectAt(int x,int y)
		{
			if (this.mSelectedObjects.Count>0)
			{
				foreach (ICustomPaint CurrentObject in this.mSelectedObjects)
				{
					if (CurrentObject.GetRegion().Contains(x,y))
						return CurrentObject;
				}
			}

			for (int i=staticObjects.Length;i>0;i--)
			{
				if ( staticObjects[i-1].GetRegion().Contains(x,y) )
					return staticObjects[i-1];
			}

			for (int i=dynamicObjects.Length;i>0;i--)
			{
				if ( dynamicObjects[i-1].GetRegion().Contains(x,y) )
					return dynamicObjects[i-1];
			}
	
			return null;
		}


		#endregion

		#region Creator and Destructor

		public DesignPane()
		{
			

			// This call is required by the Windows.Forms Form Designer.
			InitializeComponent();

			drawingImage = new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);
			
		}


		/// <summary> 
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if(components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}


		#region Component Designer generated code
		/// <summary> 
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			// 
			// DesignPane
			// 
			this.BackColor = System.Drawing.Color.White;
			this.Name = "DesignPane";
			this.Size = new System.Drawing.Size(428, 436);
			this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DesignPane_MouseUp);
			this.Paint += new System.Windows.Forms.PaintEventHandler(this.DesignPane_Paint);
			this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.DesignPane_KeyUp);
			this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.DesignPane_KeyDown);
			this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DesignPane_MouseMove);
			this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DesignPane_MouseDown);

		}
		#endregion

		#endregion		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -