Ejemplo MonoDevelop: CairoEjemplo002

Ahora un ejemplo recién un poco mas interesante en Mono.Cairo, que dibuja una X de colores sobre una ventana, luego esta misma imagen la pasa a un archivo de imagen PNG. Ahora la parte mas interesante:

// MainWindow.cs

using Cairo;
using System;
using Gtk;

public partial class MainWindow: Gtk.Window
{
	public MainWindow (): base (Gtk.WindowType.Toplevel)
	{
		Build ();
	}

	protected void OnDeleteEvent (object sender, DeleteEventArgs a)
	{
		Application.Quit ();
		a.RetVal = true;
	}

	protected virtual void OnButton1Clicked (object sender, System.EventArgs e)
	{
		Cairo.ImageSurface Imsf = new ImageSurface(Format.ARGB32, 200, 200);
		using (Cairo.Context Ctx = new Cairo.Context(Imsf)) {

			Ctx.LineWidth = 20;

			Ctx.SetSourceRGB(0,0,1); //Color Azul
			Ctx.MoveTo(0,0);
			Ctx.LineTo(100,100);
			Ctx.Stroke();

			Ctx.SetSourceRGB(0.66,0.44,0.33); //Color Cafe
			Ctx.MoveTo(100,100);
			Ctx.LineTo(0,200);
			Ctx.Stroke();

			Ctx.SetSourceRGB(0,1,0); //Color Verde
			Ctx.MoveTo(100,100);
			Ctx.LineTo(200,200);
			Ctx.Stroke();

			Ctx.SetSourceRGB(1,0,0); //Color Rojo
			Ctx.MoveTo(100,100);
			Ctx.LineTo(200,0);
			Ctx.Stroke();

			Imsf.WriteToPng("Dibujo.png");
		}
		Gtk.Window Win1 = new Gtk.Window("Dibujo");

		Gtk.Image Img1 = new Image("Dibujo.png");
		Console.WriteLine("Se a creado un archivo Dibujo.png");

		Gtk.HBox hbox = new HBox();
		hbox.Add(Img1);

		Win1.Add(hbox);
		Win1.ShowAll();
	}
}

 

Entonces:

  • Un objeto del tipo Cairo.ImageSurface es en el cual se dibuja.

  • Se podría decir que un objeto Cairo.Context, son las herramientas para dibujar en una surface, como por ejemplo un Cairo.ImageSurface o en un Cairo.Surface.

  • El metodo Cairo.Context.Stroke() dibuja según argumentos establecidos por otros metodos como por ejemplo: MoveTo(), LineTo(), LineWidth()

 

Una así queda:

 

Descarga aqui el ejemplo. [enlace roto]

Por favor avisenme si existe algún error ::)

2 thoughts on “Ejemplo MonoDevelop: CairoEjemplo002

  1. Que tal, sabes como se configura el monodevelop para que tenga soporte para cairo, es que al tratat de correr los programas me sale este error

    /home/joseangel/Projects/graficos/graficos/Main.cs(7,7): Error CS0246: The type or namespace name `Cairo’ could not be found. Are you missing a using directive or an assembly reference? (CS0246) (graficos)

    graicas, ojalá me puedas ayudar.

  2. Hola Jose

    A parte de usar el namespace Cairo “using Cairo;” también tienes que añadir la clase en tu solución o proyecto de MonoDevelop. Como dices.

    Cuando creas una solución en MonoDevelop te crea algunas carpetas, dependiendo que tipo de proyecto es. Creo que siempre en las soluciones te crea una carpeta que se llama “Referencias” , dentro del IDE si ves esa carpeta tienes que apretar el botón derecho en ella y te sale un menú, una opción es “Editar Referencias” haces click y ahí salen un montón de Referencias para añadir a tu solución. Luego, buscas “Mono.Cairo”, trata que sea la última versión 2.0.0.0 .
    Activas esa referencia y pones aceptar, y ahí puedes usar Cairo.

    Que estés bien espero que te sirva

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s