[Gtk-sharp-list] DrawingArea in ScrolledWindow

Piotr Zurek p.zurek at gmail.com
Fri Oct 27 23:58:53 EDT 2006


Hi guys,

I've written about that problem a few days ago but I didn't get any 
answer nor did I managed to solve it myself, therefore I ask again and 
I'll try to be more descriptive.

I have a problem with a DrawingArea placed inside a ScrolledWindow. Of 
course the purpose of it is to have the picture bigger than the visible 
area and scroll it with scrollbars. The problem is that when I scroll 
the area that was previously covered is not being redrawn. I think the 
problem lies in the way that I create my Cairo.Context on the Expose event:

void OnExpose (object sender, ExposeEventArgs args)
{
	myContext = Gdk.CairoHelper.Create (args.Event.Window);
	DrawSomething (myContext);
	((IDisposable) myContext.Target).Dispose ();
	((IDisposable) myContext).Dispose ();
}

It looks like I only create the context to accommodate for what's 
visible on expose and never change it. If I only knew how...

After the scrollbar is moved I fire up a Adjustemnt.ValueChanged which 
calls the Refresh method.

public void Refresh ()
{
	this.mapArea.QueueDrawArea (0, (int) Vadjustment.Value), 					 
mapArea.Allocation.Width, 							mapArea.Allocation.Height);
}

I also tried:

public void Refresh ()
{
	this.mapArea.QueueDrawArea (0, 0, 					 
mapArea.Allocation.Width, 							mapArea.Allocation.Height);
}

The same result. The picture moves but what wasn't visible still is not 
drawn. When I resize the window it works perfectly fine - newly 
allocated area is OK.

Can somebody kick me in the right direction, please? I'm stuck. Without 
that I'm not able to progress.

Screenshots:
http://www.piotrzurek.net/wp-content/uploads/2006/10/screenshot_186.png
http://www.piotrzurek.net/wp-content/uploads/2006/10/screenshot_187.png
http://www.piotrzurek.net/wp-content/uploads/2006/10/screenshot_188.png

cheers
piotr



More information about the Gtk-sharp-list mailing list