void RepaintSnappoint(ISnapPoint snappoint) { if (snappoint == null) { return; } snappoint.Draw(mScreenDisplay); }
/// <summary> /// 在画布按照snappoint重画 /// </summary> /// <param name="snappoint"></param> void RepaintSnappoint(ISnapPoint snappoint) { if (snappoint == null) { return; } CanvasWrapper dc = new CanvasWrapper(this, Graphics.FromHwnd(Handle), ClientRectangle); snappoint.Draw(dc); dc.Graphics.Dispose(); dc.Dispose(); } /// <summary>
protected override void OnPaint(PaintEventArgs e) { e.Graphics.SmoothingMode = m_smoothingMode; mScreenDisplay.BackGroundColor = BackColor; if (mScreenDisplay.IsCacheDirty) { mScreenDisplay.StartRecording(); mScreenDisplay.StartDrawing(e.Graphics, 0); mMap.Draw(mScreenDisplay); object newObj = mScreenDisplay.NewObject; if (newObj != null) { IScreenDisplayDraw drawNew = mScreenDisplay as IScreenDisplayDraw; if (newObj is LineString) { Pen mpen = new Pen(Color.Blue); drawNew.DrawLineString(newObj as LineString, mpen); } else if (newObj is MultiLineString) { Pen mpen = new Pen(Color.Blue); drawNew.DrawMultiLineString(newObj as MultiLineString, mpen); } else if (newObj is Polygon) { Brush brush = new SolidBrush(Color.Blue); drawNew.DrawPolygon(newObj as Polygon, brush, Pens.AliceBlue, false); } } //绘制捕捉点 if (m_snappoint != null) { m_snappoint.Draw(mScreenDisplay); } mScreenDisplay.FinishDrawing(); mScreenDisplay.StopRecording(); } }
void RepaintSnappoint(ISnapPoint snappoint) { if (snappoint == null) return; CanvasWrapper dc = new CanvasWrapper(this, Graphics.FromHwnd(Handle), ClientRectangle); snappoint.Draw(dc); dc.Graphics.Dispose(); dc.Dispose(); }
/// <summary> /// 响应消息 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { CommonTools.Tracing.StartTrack(Program.TracePaint); //TracePaint=1 ClearPens(); //清空画笔 e.Graphics.SmoothingMode = m_smoothingMode; CanvasWrapper dc = new CanvasWrapper(this, e.Graphics, ClientRectangle); Rectangle cliprectangle = e.ClipRectangle; if (m_staticImage == null) { cliprectangle = ClientRectangle; m_staticImage = new Bitmap(ClientRectangle.Width, ClientRectangle.Height); m_staticDirty = true; } RectangleF r = ScreenUtils.ToUnitNormalized(dc, cliprectangle); if (float.IsNaN(r.Width) || float.IsInfinity(r.Width)) { r = ScreenUtils.ToUnitNormalized(dc, cliprectangle); } if (m_staticDirty) { m_staticDirty = false; CanvasWrapper dcStatic = new CanvasWrapper(this, Graphics.FromImage(m_staticImage), ClientRectangle); dcStatic.Graphics.SmoothingMode = m_smoothingMode; m_model.BackgroundLayer.Draw(dcStatic, r); if (m_model.GridLayer.Enabled) { m_model.GridLayer.Draw(dcStatic, r); } PointF nullPoint = ToScreen(new UnitPoint(0, 0)); dcStatic.Graphics.DrawLine(Pens.Blue, nullPoint.X - 10, nullPoint.Y, nullPoint.X + 10, nullPoint.Y); dcStatic.Graphics.DrawLine(Pens.Blue, nullPoint.X, nullPoint.Y - 10, nullPoint.X, nullPoint.Y + 10); ICanvasLayer[] layers = m_model.Layers; //线条粗细颜色 for (int layerindex = layers.Length - 1; layerindex >= 0; layerindex--) { if (layers[layerindex] != m_model.ActiveLayer && layers[layerindex].Visible) { layers[layerindex].Draw(dcStatic, r); } } if (m_model.ActiveLayer != null) { m_model.ActiveLayer.Draw(dcStatic, r); } dcStatic.Dispose(); } e.Graphics.DrawImage(m_staticImage, cliprectangle, cliprectangle, GraphicsUnit.Pixel); foreach (IDrawObject drawobject in m_model.SelectedObjects) { drawobject.Draw(dc, r); } if (m_newObject != null) { m_newObject.Draw(dc, r); } if (m_snappoint != null) { m_snappoint.Draw(dc); } if (m_selection != null) { m_selection.Reset(); m_selection.SetMousePoint(e.Graphics, this.PointToClient(Control.MousePosition)); } if (m_moveHelper.IsEmpty == false) { m_moveHelper.DrawObjects(dc, r); } if (m_nodeMoveHelper.IsEmpty == false) { m_nodeMoveHelper.DrawObjects(dc, r); } dc.Dispose(); ClearPens(); CommonTools.Tracing.EndTrack(Program.TracePaint, "OnPaint complete"); }