区域坐标的绘图事件为0,0

时间:2014-11-23 22:37:15

标签: c# mono gtk cairo

我试图用C#在Mono的GTK 2.12中绘制DrawingArea。但是,当我调用QueueDrawArea()并发送当前点时,DrawingArea的Expose事件中不存在点值。

我的想法是绘制一个矩形,我会在这个区域放置一些东西,但我不想重绘整个区域。

    drawarea.DragDrop += new DragDropHandler (delegate(object o, DragDropArgs args) {
        Console.WriteLine(args.X + ", " + args.Y);  //correct drop coords shown here
        drawarea.QueueDrawArea(args.X, args.Y, 10, 10);
    });

ExposeEvent for drawarea:

protected override bool OnExposeEvent(Gdk.EventExpose args)
        {
            Console.WriteLine (args.Area.X + ", " + args.Area.Y);  //(0, 0)
            context = Gdk.CairoHelper.Create(args.Window);
            context.SetSource(mainSurface);

            Cairo.Color color = new Cairo.Color(0.4, 0.8, 0, 1);
            context.Antialias = Antialias.None;
            context.SetSourceRGBA(color.R, color.G, color.B, color.A);
            context.LineCap = LineCap.Round;

            context.Rectangle(args.Area.X, args.Area.Y,  50, 50);
            context.LineWidth = 10;
            context.Clip();
            context.Paint();
            return true;
        }

我一直无法找到为什么会发生这种情况,或者在调用QueueDrawArea()和使用脏区域的值触发Draw事件之间缺少什么潜在的链接。

0 个答案:

没有答案