protected void DrawDragLine(DrawContext dc) { if (State != States.DRAGING_POINTS) { return; } dc.Drawing.DrawLine(dc.GetPen(DrawTools.PEN_DRAG_LINE), LastDownPoint, dc.DevPointToWorldPoint(CrossCursor.Pos)); }
protected void DrawAccordingState(DrawContext dc) { switch (State) { case States.SELECT: break; case States.START_DRAGING_POINTS: break; case States.RUBBER_BAND_SELECT: DrawSelRect(dc); break; case States.DRAGING_POINTS: break; case States.START_CREATE: break; case States.CREATING: if (FigureCreator != null) { Vector3d p = dc.DevPointToWorldPoint(CrossCursor.Pos); FigureCreator.DrawTemp(dc, (CadVertex)p, dc.GetPen(DrawTools.PEN_TEMP_FIGURE)); } break; case States.MEASURING: if (MeasureFigureCreator != null) { Vector3d p = dc.DevPointToWorldPoint(CrossCursor.Pos); MeasureFigureCreator.DrawTemp(dc, (CadVertex)p, dc.GetPen(DrawTools.PEN_TEMP_FIGURE)); } break; } if (mInteractCtrl.IsActive) { mInteractCtrl.Draw(dc, SnapPoint); } }
public void CreateBitmap(int w, int h, uint argb, int lineW, string fname) { DrawContext dc = Controller.DC; CadObjectDB db = Controller.DB; List <uint> idlist = Controller.DB.GetSelectedFigIDList(); var figList = new List <CadFigure>(); idlist.ForEach(id => { figList.Add(db.GetFigure(id)); }); CadRect r = CadUtil.GetContainsRectScrn(dc, figList); CadRect wr = default(CadRect); wr.p0 = dc.DevPointToWorldPoint(r.p0); wr.p1 = dc.DevPointToWorldPoint(r.p1); DrawContextGDIBmp tdc = new DrawContextGDIBmp(); tdc.WorldScale = dc.WorldScale; tdc.SetCamera(dc.Eye, dc.LookAt, dc.UpVector); tdc.CalcProjectionMatrix(); tdc.SetViewSize(w, h); tdc.SetViewOrg(new Vector3d(w / 2, h / 2, 0)); tdc.SetupTools(DrawTools.DrawMode.DARK); Pen pen = new Pen(Color.FromArgb((int)argb), lineW); DrawPen drawPen = new DrawPen(pen); double sw = r.p1.X - r.p0.X; double sh = r.p1.Y - r.p0.Y; double a = Math.Min(w, h) / (Math.Max(sw, sh) + lineW); tdc.DeviceScaleX *= a; tdc.DeviceScaleY *= a; CadRect tr = CadUtil.GetContainsRectScrn(tdc, figList); Vector3d trcp = (Vector3d)((tr.p1 - tr.p0) / 2 + tr.p0); Vector3d d = trcp - tdc.ViewOrg; tdc.SetViewOrg(tdc.ViewOrg - d); DrawParams dp = default; dp.LinePen = drawPen; dp.EdgePen = drawPen; Env.RunOnMainThread((Action)(() => { tdc.Drawing.Clear(dc.GetBrush(DrawTools.BRUSH_TRANSPARENT)); tdc.GdiGraphics.SmoothingMode = SmoothingMode.AntiAlias; foreach (CadFigure fig in figList) { fig.Draw(tdc, dp); } if (fname.Length > 0) { tdc.Image.Save(fname); } else { BitmapUtil.BitmapToClipboardAsPNG(tdc.Image); } tdc.Dispose(); drawPen.Dispose(); })); }