Example #1
0
    static void Main()
    {
        Application.Init ();
        Gtk.Window w = new Gtk.Window ("RotarCuadrado");

        DrawingArea da = new CairoGraphic ();
        Box box = new VBox (true, 0);
        box.Add (da);

        w.Add (box);
        w.Resize (256, 256);

        w.DeleteEvent += closeWindow;
        w.ShowAll ();

        Application.Run ();
    }
Example #2
0
    static void Main()
    {
        Application.Init();
        Gtk.Window w = new Gtk.Window("Mono-Cairo Truchet Tile");

        DrawingArea a = new CairoGraphic();

        Box box = new HBox(true, 0);

        box.Add(a);

        w.Add(box);
        w.Resize(500, 500);
        w.DeleteEvent += close_window;
        w.ShowAll();

        Application.Run();
    }
Example #3
0
    static void draw(Cairo.Context gr, int width, int height)
    {
        gr.Scale(width, height);
        gr.LineWidth = 0.01;

        /* draw helping lines */
        gr.SetSourceColor(new Cairo.Color(1, 1, 0, 1));


        gr.LineTo(new PointD(0.5, 0.5));

        List <PointD> streamlines = CairoGraphic.test();

        for (int i = 0; i < streamlines.Count; ++i)
        {
            Console.WriteLine(streamlines[i].X + " " + streamlines[i].Y);
            gr.LineTo(streamlines[i]);
            gr.Stroke();
            gr.LineTo(streamlines[i]);
        }
    }
Example #4
0
    public MainWindow()
        : base(Gtk.WindowType.Toplevel)
    {
        Build ();

        area = new CairoGraphic ();

        Box box = new HBox (true, 0);

        box.Add (area);

        this.Add (box);

        this.ShowAll ();

        Graph g = new Graph ();

        Graph.CoulombConstant += 15;
        Graph.SpringConstant += 25;
        Graph.Damping = 0.8;

        Node q1 = new Node (){ Mass = 3 };
        Node q2 = new Node (){ Mass = 2 };
        Node q3 = new Node ();
        Node q4 = new Node ();
        Node q5 = new Node ();
        Node q6 = new Node ();
        Node q7 = new Node ();

        q1.Charge = 1.5;
        q1.Data = new NodeData(){
            Label = "CA KGroup",
            Stroke = new Color( 0.5, 0.5, 0.5, 0.5 ),
            Fill = new Color( 1, 1, 1, 1 ),
            Size = 60 };

        q2.Charge = 1.5;
        q2.Data = new NodeData(){
            Label = "CA AGroup",
            Stroke = new Color( 0.5, 0.5, 0.5, 0.5 ),
            Fill = new Color( 1, 1, 1, 1 ),
            Size = 60 };

        q1.Location = new ForceGraph.Point(){ X = 12, Y = 5, Z = 0 };
        q2.Location = new ForceGraph.Point(){ X = 0, Y = -2, Z = 0 };
        q3.Location = new ForceGraph.Point(){ X = -4, Y = 13, Z = 5 };
        q5.Location = new ForceGraph.Point(){ X = 1, Y = 0, Z = 0 };
        q6.Location = new ForceGraph.Point(){ X = 2, Y = 10, Z = 0 };
        q7.Location = new ForceGraph.Point(){ X = 3, Y = -6, Z = 0 };

        g.AddNode( q1 );
        g.AddNode( q2 );
        g.AddNode( q3 );
        g.AddNode( q4 );
        g.AddNode( q5 );
        g.AddNode( q6 );
        g.AddNode( q7 );

        g.Join( q1, q5 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) };
        g.Join( q1, q6 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) };
        g.Join( q1, q7 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) };

        var grant = g.Join( q1, q2 );
        grant.NaturalLength = 12;

        g.Join( q2, q3 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) };
        g.Join( q2, q4 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) };

        area.ForceGraph = g;
        area.Magnification = 30;

        Thread t = new Thread( new ThreadStart( this.Render) );
        t.Start();

        area.AddEvents( (int) Gdk.EventMask.ButtonPressMask );
        area.AddEvents( (int) Gdk.EventMask.ButtonReleaseMask );
        area.AddEvents( (int) Gdk.EventMask.Button1MotionMask );
        area.Sensitive = true;

        area.ButtonPressEvent += HandleHandleButtonPressEvent;
        area.ButtonReleaseEvent += HandleAreaButtonReleaseEvent;
    }