public override void DrawLine(Color c, Point p1, Point p2) { Gdk.GC g = new Gdk.GC(window); g.RgbFgColor = GdkColor(c); window.DrawLine(g, (int)p1.X, (int)p1.Y, (int)p2.X, (int)p2.Y); }
void DrawLines(Gdk.Window win, Cairo.Context g, int height, int width) { if (Environment.OSVersion.Platform == PlatformID.Unix) { Cairo.Color color = new Cairo.Color(0, 0, 0); CairoUtils.DrawLine(g, currentFrame / pixelRatio, 0, currentFrame / pixelRatio, height, 1, color); CairoUtils.DrawLine(g, 0, 0, width, 0, 1, color); CairoUtils.DrawLine(g, 0, height, width, height, 1, color); } else { win.DrawLine(Style.DarkGC(StateType.Normal), 0, 0, width, 0); win.DrawLine(Style.DarkGC(StateType.Normal), (int)(currentFrame / pixelRatio), 0, (int)(currentFrame / pixelRatio), height); } }
public void Step4_Draw(Window window, Gdk.GC gc) { if (m_islands == null) return; if (!m_startSet) return; if (!m_endSet) return; // Draw a line from start point to ending point. gc.RgbFgColor = new Color(255, 0, 255); window.DrawLine(gc, m_startx, m_starty, m_endx, m_endy); }
protected override void OnExpose(object o, ExposeEventArgs args) { Gdk.GC gc1; Gdk.Color color = new Gdk.Color(); EventExpose eventExpose = args.Event; Gdk.Window window = eventExpose.Window; gc1 = new Gdk.GC(window); color.Red = 0; color.Green = 0; color.Blue = 0; gc1.RgbFgColor = color; color.Red = 65535; color.Green = 65535; color.Blue = 65535; gc1.RgbBgColor = color; window.DrawLine(gc1, 20, 20, 350, 399); using (Graphics g = args.Window){ Pen p = new Pen(Color.Black, 1.0f); foreach (object[] row in store) { string a = row[0] + ""; string[] ps = a.Split(new Char [] { ' ' }); switch (ps[0].ToLower().ToCharArray()[0]) { case 's': { CurrentPoint.x = Single.Parse(ps[1]); CurrentPoint.y = Single.Parse(ps[2]); break; } case 'l': { drawLineTo(new Point(Single.Parse(ps[1]), Single.Parse(ps[2])), g); break; } case 'c': { drawBezier(new Point(Single.Parse(ps[1]), Single.Parse(ps[2])), new Point(Single.Parse(ps[3]), Single.Parse(ps[4])), new Point(Single.Parse(ps[5]), Single.Parse(ps[6])), g); break; } } } } }
void Draw_Graph(Rectangle area, Gdk.Window window, double y_grid, double y_max, bool grid, IEnumerable <double> data, Gdk.GC gc) { int y_intervals = (int)Math.Ceiling(y_max / y_grid); double offset_x = area.Left; double offset_y = area.Bottom; double scale_x = area.Width / (double)(data.Count() + 1); double scale_y = -area.Height / (y_grid * y_intervals); if (grid) { for (int i = 0; i <= y_intervals; i++) { int y = (int)Math.Round(offset_y + scale_y * y_grid * i); window.DrawLine(drawingArea.Style.MidGC(Gtk.StateType.Normal), area.Left, y, area.Right, y); } } var points = data.Select((y, i) => new Point( (int)Math.Round(offset_x + scale_x * i), (int)Math.Round(offset_y + scale_y * y))); window.DrawLines(gc, points.ToArray()); }
void DrawTicks(Gdk.Window win, Gdk.GC gc, TickEnumerator e, AxisPosition pos, AxisDimension ad, int tickSize, bool showLabels) { int rwidth, rheight; win.GetSize(out rwidth, out rheight); Pango.Layout layout = null; if (showLabels) { layout = new Pango.Layout(this.PangoContext); layout.FontDescription = Pango.FontDescription.FromString("Tahoma 8"); } bool isX = pos == AxisPosition.Top || pos == AxisPosition.Bottom; bool isTop = pos == AxisPosition.Top || pos == AxisPosition.Right; double start = GetStart(ad); double end = GetEnd(ad); e.Init(GetOrigin(ad)); while (e.CurrentValue > start) { e.MovePrevious(); } int lastPosLabel; int lastPos; int lastTw = 0; if (isX) { lastPosLabel = reverseXAxis ? left + width + MinLabelGapX : left - MinLabelGapX; lastPos = left - minTickStep * 2; } else { lastPosLabel = reverseYAxis ? top - MinLabelGapY : rheight + MinLabelGapY; lastPos = top + height + minTickStep * 2; } for ( ; e.CurrentValue <= end; e.MoveNext()) { int px, py; int tw = 0, th = 0; int tick = tickSize; GetPoint(e.CurrentValue, e.CurrentValue, out px, out py); if (showLabels) { layout.SetMarkup(e.CurrentLabel); layout.GetPixelSize(out tw, out th); } if (isX) { if (Math.Abs((long)px - (long)lastPos) < minTickStep || px < left || px > left + width) { continue; } lastPos = px; bool labelFits = false; if ((Math.Abs(px - lastPosLabel) - (tw / 2) - (lastTw / 2)) >= MinLabelGapX) { lastPosLabel = px; lastTw = tw; labelFits = true; } if (isTop) { if (showLabels) { if (labelFits) { win.DrawLayout(gc, px - (tw / 2), top - AreaBorderWidth - th, layout); } else { tick = tick / 2; } } win.DrawLine(gc, px, top, px, top + tick); } else { if (showLabels) { if (labelFits) { win.DrawLayout(gc, px - (tw / 2), top + height + AreaBorderWidth, layout); } else { tick = tick / 2; } } win.DrawLine(gc, px, top + height, px, top + height - tick); } } else { if (Math.Abs((long)lastPos - (long)py) < minTickStep || py < top || py > top + height) { continue; } lastPos = py; bool labelFits = false; if ((Math.Abs(py - lastPosLabel) - (th / 2) - (lastTw / 2)) >= MinLabelGapY) { lastPosLabel = py; lastTw = th; labelFits = true; } if (isTop) { if (showLabels) { if (labelFits) { win.DrawLayout(gc, left + width + AreaBorderWidth + 1, py - (th / 2), layout); } else { tick = tick / 2; } } win.DrawLine(gc, left + width, py, left + width - tick, py); } else { if (showLabels) { if (labelFits) { win.DrawLayout(gc, left - AreaBorderWidth - tw - 1, py - (th / 2), layout); } else { tick = tick / 2; } } win.DrawLine(gc, left, py, left + tick, py); } } } }