protected override bool OnDrawn(Cairo.Context cr) { if (this.isDirty) { this.Rebuild(); } bool baseDrawnResult = base.OnDrawn(cr); cr.SetFontSize(FONT_HEIGHT); cr.SelectFontFace("Mono", FontSlant.Normal, FontWeight.Normal); cr.Rectangle(0.0, 0.0, this.allocRect.Width, this.allocRect.Height); cr.SetSourceRGB(1, 1, 1); cr.Fill(); var gradient = new LinearGradient(0.0, 0.0, 0.0, this.allocRect.Height); gradient.AddColorStopRgb(0.0, new Color(0.4, 0.4, 0.4)); gradient.AddColorStopRgb(0.1, new Color(1.0, 1.0, 1.0)); gradient.AddColorStopRgb(0.2, new Color(0.6, 0.6, 0.6)); gradient.AddColorStopRgb(1.0, new Color(0.1, 0.1, 0.1)); cr.LineWidth = 1; foreach (var box in this.boxen) { this.RoundedRect(cr, box.Rect, 4.0); cr.SetSource(gradient); cr.FillPreserve(); cr.SetSourceRGB(0, 0, 0); cr.Stroke(); int x = (int)(box.Rect.X + TAGBOX_PADDING * 2 + TAGBOX_XSIZE); int y = (int)(box.Rect.Y + box.Rect.Height / 2 + cr.FontExtents.Height / 2 - cr.FontExtents.Descent / 2); cr.MoveTo(x, y); cr.TextPath(box.Tag); cr.SetSourceRGB(1.0, 1.0, 1.0); cr.Fill(); cr.MoveTo(box.Rect.X + TAGBOX_PADDING + TAGBOX_XOFFSET, box.Rect.Y + TAGBOX_PADDING + TAGBOX_XOFFSET); cr.RelLineTo(TAGBOX_XSIZE - TAGBOX_XOFFSET * 2, TAGBOX_XSIZE - TAGBOX_XOFFSET * 2); cr.MoveTo(box.Rect.X + TAGBOX_PADDING + TAGBOX_XOFFSET, box.Rect.Y + TAGBOX_PADDING + TAGBOX_XSIZE - TAGBOX_XOFFSET); cr.RelLineTo(TAGBOX_XSIZE - TAGBOX_XOFFSET * 2, -TAGBOX_XSIZE + TAGBOX_XOFFSET * 2); cr.Stroke(); } return(baseDrawnResult); }
public override void RealRenderCairo(Cairo.Context context) { if (Camera.IsRendererOutOfScreen(this)) { return; } Vector2 screenPos = Camera.WorldToScreenPosition(gameObject.transform.position); double realSize = (double)gameObject.transform.LocalToWorldLength(size); context.MoveTo(screenPos.ToPointD()); context.SetSourceRGBA(ColorR, ColorG, ColorB, ColorA); context.SetFontSize(realSize); context.TextPath(text); context.Fill(); }
static void draw(Cairo.Context gr, int width, int height) { gr.Scale(width, height); gr.LineWidth = 0.04; gr.SelectFontFace("Sans", FontSlant.Normal, FontWeight.Bold); gr.SetFontSize(0.35); gr.MoveTo(new PointD(0.04, 0.53)); gr.ShowText("Hello"); gr.MoveTo(new PointD(0.27, 0.65)); gr.TextPath("void"); gr.ColorRgb = new Color(0.5, 0.5, 1, 0); gr.FillPreserve(); gr.ColorRgb = new Color(0, 0, 0, 0); gr.LineWidth = 0.01; gr.Stroke(); gr.Color = new Color(1, 0.2, 0.2, 0.6); gr.Arc(0.04, 0.53, 0.02, 0, 2 * M_PI); gr.Arc(0.27, 0.65, 0.02, 0, 2 * M_PI); gr.Fill(); }
public void text(Context cr, int width, int height) { Normalize (cr, width, height); cr.SelectFontFace("Sans", FontSlant.Normal, FontWeight.Bold); cr.SetFontSize(0.35); cr.MoveTo(0.04, 0.53); cr.ShowText("Hello"); cr.MoveTo(0.27, 0.65); cr.TextPath("void"); cr.Save(); cr.Color = new Color (0.5,0.5,1); cr.Fill(); cr.Restore(); cr.LineWidth = 0.01; cr.Stroke(); // draw helping lines cr.Color = new Color (1.0, 0.2, 0.2, 0.6); cr.Arc(0.04, 0.53, 0.02, 0, 2*Math.PI); cr.Arc(0.27, 0.65, 0.02, 0, 2*Math.PI); cr.Fill(); }