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 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 WmfGdiPen(DColor stroke, double strokeWidth, DStrokeStyle strokeStyle, DStrokeCap strokeCap, DStrokeJoin strokeJoin) { Stroke = stroke; StrokeWidth = strokeWidth; StrokeStyle = strokeStyle; StrokeCap = strokeCap; StrokeJoin = strokeJoin; }
public abstract void DrawPolyline(DPoints pts, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin, DStrokeCap strokeCap);
public abstract void DrawRect(double x, double y, double width, double height, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin);
public override void DrawRect(double x, double y, double width, double height, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin) { // 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.DrawRectangle(MakePen(WFHelper.MakeColor(color, alpha), strokeWidth, strokeStyle, strokeJoin, DStrokeCap.Butt), (float)x, (float)y, (float)width, (float)height); } catch { } }
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 DrawRect(double x, double y, double width, double height, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin) { UpdateMaxNumOfObjects(1); CreatePen(1, strokeWidth, color, strokeStyle, DStrokeJoin.Round, DStrokeCap.Round); SelectObject(1); SelectObject((uint)Emf.StockObject.NULL_BRUSH); Rectangle(x, y, width, height); DeleteObject(1); }
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); }
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 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 DrawRect(double x, double y, double width, double height, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin) { CreatePenIndirect(strokeWidth, color, strokeStyle, DStrokeJoin.Round, DStrokeCap.Round); SelectObject(0); CreateBrushIndirect(); SelectObject(1); RectShape(Wmf.Rectangle, (ushort)x, (ushort)y, (ushort)width, (ushort)height); DeleteObject(1); DeleteObject(0); }
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; }
public override void DrawRect(double x, double y, double width, double height, DColor color, double alpha, double strokeWidth, DStrokeStyle strokeStyle, DStrokeJoin strokeJoin) { cr.SetSource(MakeColor(color, alpha)); cr.LineWidth = strokeWidth; CairoStrokeStyle(cr, strokeStyle, strokeWidth); cr.LineJoin = MakeLineJoin(strokeJoin); cr.Rectangle(x, y, width, height); 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); }
LineJoin MakeLineJoin(DStrokeJoin strokeJoin) { switch (strokeJoin) { case DStrokeJoin.Mitre: return LineJoin.Miter; case DStrokeJoin.Round: return LineJoin.Round; case DStrokeJoin.Bevel: return LineJoin.Bevel; } return LineJoin.Miter; }
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)); }