/// <summary> /// Визуализация. /// Обхождане на всички елементи в списъка и извикване на визуализиращия им метод. /// </summary> /// <param name="grfx">Къде да се извърши визуализацията.</param> public virtual void Draw(Graphics grfx, DoubleBufferedPanel vPort) { foreach (Shape item in vPort.ShapeList) { DrawShape(grfx, item); } }
private void borderColorButton_Click(object sender, EventArgs e) { CurrentViewPort = new DoubleBufferedPanel(); colorButton.Text = "Border"; colorBox.BackColor = BorderColor; CurrentViewPort.Refresh(); }
/// <summary> /// Добавя примитив - правоъгълник на произволно място върху клиентската област. /// </summary> /// <summary> /// Проверява дали дадена точка е в елемента. /// Обхожда в ред обратен на визуализацията с цел намиране на /// "най-горния" елемент т.е. този който виждаме под мишката. /// </summary> /// <param name="point">Указана точка</param> /// <returns>Елемента на изображението, на който принадлежи дадената точка.</returns> public Shape ContainsPoint(PointF point, DoubleBufferedPanel vPort) { for (int i = vPort.ShapeList.Count - 1; i >= 0; i--) { if (vPort.ShapeList[i].Contains(point)) { return(vPort.ShapeList[i]); } } return(null); }
// when changing the tab, check if there exist, if not, then add and initialize a new one, //then compare currentViewPort with viewPortsList private void tabMenu_SelectedIndexChanged(object sender, EventArgs e) { panel1.Controls.Clear(); if (!viewPortsList.Exists(v => v.Name == tabMenu.SelectedTab.Text)) { CurrentViewPort = new DoubleBufferedPanel(tabMenu.SelectedTab.Text); CurrentViewPort.InitializeComponent(); viewPortsList.Add(CurrentViewPort); CurrentViewPort.Load += new EventHandler(ViewPortLoad); } foreach (var port in viewPortsList) { if (port.Name == tabMenu.SelectedTab.Text) { CurrentViewPort = port; panel1.Controls.Add(CurrentViewPort); break; } } }
/// <summary> /// Прерисува всички елементи в shapeList върху e.Graphics /// </summary> public void ReDraw(object sender, PaintEventArgs e, DoubleBufferedPanel vPort) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; e.Graphics.ScaleTransform(MainForm.zoom, MainForm.zoom); Draw(e.Graphics, vPort); }