public abstract void DrawPolyline(DPoints pts, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin, DStrokeCap strokeCap);
void WmfSelectGdiObject(int idx) { // this should not be happening but sometimes does? if (idx == WmfGdiObjects.Count) idx--; // select object and apply properties to our graphics primatives object o = WmfGdiObjects[idx]; if (o is WmfGdiBrush) fill = ((WmfGdiBrush)o).Fill; else if (o is WmfGdiPen) { stroke = ((WmfGdiPen)o).Stroke; strokeWidth = ((WmfGdiPen)o).StrokeWidth; strokeStyle = ((WmfGdiPen)o).StrokeStyle; strokeCap = ((WmfGdiPen)o).StrokeCap; strokeJoin = ((WmfGdiPen)o).StrokeJoin; } }
public override void DrawLine(DPoint pt1, DPoint pt2, DColor color, double alpha, DStrokeStyle strokeStyle, double strokeWidth, DStrokeCap strokeCap) { CreatePenIndirect(strokeWidth, color, strokeStyle, DStrokeJoin.Round, strokeCap); SelectObject(0); CreateBrushIndirect(); SelectObject(1); MoveTo(pt1); LineTo(pt2); DeleteObject(1); DeleteObject(0); }
public abstract void DrawLine(DPoint pt1, DPoint pt2, DColor color, double alpha, DStrokeStyle strokeStyle, double strokeWidth, DStrokeCap strokeCap);
public override void DrawPolyline(DPoints pts, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin, DStrokeCap strokeCap) { if (pts.Count > 1) g.DrawLines(MakePen(WFHelper.MakeColor(color, alpha), strokeWidth, strokeStyle, strokeJoin, strokeCap), MakePoints(pts)); }
uint StrokePenStyle(DStrokeStyle ss, DStrokeJoin sj, DStrokeCap sc) { Emf.PenStyle _ss = 0; switch (ss) { case DStrokeStyle.Dash: _ss = Emf.PenStyle.PS_DASH; break; case DStrokeStyle.DashDot: _ss = Emf.PenStyle.PS_DASHDOT; break; case DStrokeStyle.DashDotDot: _ss = Emf.PenStyle.PS_DASHDOTDOT; break; case DStrokeStyle.Dot: _ss = Emf.PenStyle.PS_DOT; break; case DStrokeStyle.Solid: _ss = Emf.PenStyle.PS_SOLID; break; } Emf.PenStyle _sj = 0; switch (sj) { case DStrokeJoin.Bevel: _sj = Emf.PenStyle.PS_JOIN_BEVEL; break; case DStrokeJoin.Mitre: _sj = Emf.PenStyle.PS_JOIN_MITER; break; case DStrokeJoin.Round: _sj = Emf.PenStyle.PS_JOIN_ROUND; break; } Emf.PenStyle _sc = 0; switch (sc) { case DStrokeCap.Butt: _sc = Emf.PenStyle.PS_ENDCAP_FLAT; break; case DStrokeCap.Round: _sc = Emf.PenStyle.PS_ENDCAP_ROUND; break; case DStrokeCap.Square: _sc = Emf.PenStyle.PS_ENDCAP_SQUARE; break; } return (uint)(_ss | _sj | _sc); }
public override void DrawPolyline(DPoints pts, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin, DStrokeCap strokeCap) { UpdateMaxNumOfObjects(1); CreatePen(1, strokeWidth, color, strokeStyle, strokeJoin, strokeCap); SelectObject(1); SelectObject((uint)Emf.StockObject.NULL_BRUSH); Polyline(pts); DeleteObject(1); }
public override void DrawPolyline(DPoints pts, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin, DStrokeCap strokeCap) { if (pts.Count > 1) { cr.SetSource(MakeColor(color, alpha)); CairoStrokeStyle(cr, strokeStyle, strokeWidth); cr.LineWidth = strokeWidth; cr.LineJoin = MakeLineJoin(strokeJoin); cr.LineCap = MakeLineCap(strokeCap); cr.MoveTo(pts[0].X, pts[0].Y); for (int i = 1; i < pts.Count; i++) cr.LineTo(pts[i].X, pts[i].Y); cr.Stroke(); } }
void CreatePenIndirect(double sw, DColor col, DStrokeStyle ss, DStrokeJoin sj, DStrokeCap sc) { WriteFuncHeader(8, Wmf.CreatePenIndirect); WriteUShort(StrokePenStyle(ss, sj, sc)); WriteUShort((ushort)sw); WriteUShort((ushort)sw); WriteColor(col); // need this for Wmf.Header numOfObjects++; }
public override void DrawLine(DPoint pt1, DPoint pt2, DColor color, double alpha, DStrokeStyle strokeStyle, double strokeWidth, DStrokeCap strokeCap) { UpdateMaxNumOfObjects(1); CreatePen(1, strokeWidth, color, strokeStyle, DStrokeJoin.Round, strokeCap); SelectObject(1); SelectObject((uint)Emf.StockObject.NULL_BRUSH); MoveTo(pt1); LineTo(pt2); DeleteObject(1); }
public override void DrawPolyline(DPoints pts, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin, DStrokeCap strokeCap) { CreatePenIndirect(strokeWidth, color, strokeStyle, strokeJoin, strokeCap); SelectObject(0); CreateBrushIndirect(); SelectObject(1); Polyline(pts); DeleteObject(1); DeleteObject(0); }
private Pen MakePen(Color color, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin, DStrokeCap strokeCap) { Pen p = new Pen(color, (float)strokeWidth); p.DashStyle = MakeDashStyle(strokeStyle); p.LineJoin = MakeLineJoin(strokeJoin); p.SetLineCap(MakeLineCap(strokeCap), MakeLineCap(strokeCap), DashCap.Flat); return p; }
private DashCap MakeDashCap(DStrokeCap strokeCap) { switch (strokeCap) { case DStrokeCap.Butt: return DashCap.Flat; case DStrokeCap.Round: return DashCap.Round; case DStrokeCap.Square: return DashCap.Flat; } return DashCap.Flat; }
public WmfGdiPen(DColor stroke, double strokeWidth, DStrokeStyle strokeStyle, DStrokeCap strokeCap, DStrokeJoin strokeJoin) { Stroke = stroke; StrokeWidth = strokeWidth; StrokeStyle = strokeStyle; StrokeCap = strokeCap; StrokeJoin = strokeJoin; }
void CreatePen(uint objectIndex, double sw, DColor col, DStrokeStyle ss, DStrokeJoin sj, DStrokeCap sc) { WriteRecordHeader(Emf.RecordType.EMR_CREATEPEN, 28); WriteUInt(objectIndex); WriteUInt(StrokePenStyle(ss, sj, sc)); WriteUInt((uint)sw); WriteUInt((uint)sw); WriteColor(col); }
public override void DrawLine(DPoint pt1, DPoint pt2, DColor color, double alpha, DStrokeStyle strokeStyle, double strokeWidth, DStrokeCap strokeCap) { cr.SetSource(MakeColor(color, alpha)); cr.LineWidth = strokeWidth; CairoStrokeStyle(cr, strokeStyle, strokeWidth); cr.LineCap = MakeLineCap(strokeCap); cr.MoveTo(pt1.X, pt1.Y); cr.LineTo(pt2.X, pt2.Y); cr.Stroke(); }
void ExtCreatePen(uint objectIndex, double sw, DColor col, DStrokeStyle ss, DStrokeJoin sj, DStrokeCap sc) { WriteRecordHeader(Emf.RecordType.EMR_EXTCREATEPEN, 52); WriteUInt(objectIndex); WriteUInt(0); WriteUInt(0); WriteUInt(0); WriteUInt(0); // LogPenEx WriteUInt(StrokePenStyle(ss, sj, sc)); WriteUInt((uint)sw); WriteUInt(Wmf.BS_SOLID); WriteColor(col); WriteUInt(0); WriteUInt(0); }
LineCap MakeLineCap(DStrokeCap strokeCap) { switch (strokeCap) { case DStrokeCap.Butt: return LineCap.Butt; case DStrokeCap.Round: return LineCap.Round; case DStrokeCap.Square: return LineCap.Square; } return LineCap.Butt; }
public override void DrawLine(DPoint pt1, DPoint pt2, DColor color, double alpha, DStrokeStyle strokeStyle, double strokeWidth, DStrokeCap strokeCap) { // see: // http://groups.google.com/group/microsoft.public.dotnet.framework.drawing/browse_thread/thread/c52a43702fccaab8/838a26535bf6e2e6?lnk=st&q=drawline+outofmemoryexception#838a26535bf6e2e6 // http://www.codeprof.com/dev-archive/123/2-8-1234065.shtm try { g.DrawLine(MakePen(WFHelper.MakeColor(color, alpha), strokeWidth, strokeStyle, DStrokeJoin.Mitre, strokeCap), (float)pt1.X, (float)pt1.Y, (float)pt2.X, (float)pt2.Y); } catch { } }