Skip to content

Draw a rectangle on top of an image using RGtk2?

5 messages · Michael Lawrence, ronggui

#
Dear all,

I use gtkImageFromFile to display an image. Then I want to do some
gsignal to handle mouse event. I click the mouse and move a another
position and release. I can get the position of the firs click and the
release position,  then I would to draw a rectangle to display the
region I have selected. I need some hints on what functions should I
look for. I tried to google but don't know how.

Thanks.
#
Thanks, Michael. Just one more follow-up question. Is there other way
to get the "GdkDrawable" (here da2) without using <<- or other
assignment operation from within expose_fn? I thought
da$GetRootWindow() would work, but it does not.

da <- gtkDrawingArea()
da2 <- NULL

expose_fn <- function(widget,event,...){
img <- gdkPixbufNewFromFile("/media/wind/Pictures/kaehatu.jpg")$retval
da2 <<-widget[["window"]]
gdkDrawPixbuf(da2, gc = NULL, pixbuf=img,
event[["area"]][["x"]], event[["area"]][["y"]],
event[["area"]][["x"]], event[["area"]][["y"]],
event[["area"]][["width"]], event[["area"]][["height"]])
 return(FALSE)
}
gSignalConnect(da,"expose-event",expose_fn)
w<-gtkWindow(show=F)
w$SetSizeRequest(400,300)
w$Add(da)
w$Show()

dgc <- gdkGCNew(da2)
gdkGCSetLineAttributes(dgc, line.width=2, line.style="solid","round","round")
gdkDrawRectangle(da2,dgc,FALSE,10,10,100,100)


Ronggui

2009/5/23 Michael Lawrence <mflawren at fhcrc.org>:

  
    
1 day later
#
I see. So if I want to draw a rectangle by a function outside the
expose_fn, I need to refer to the drawable within the expose_fn. One
possibility is to use an environment, so I can refer to it
dynamically. Thanks,

Ronggui

2009/5/25 Michael Lawrence <mflawren at fhcrc.org>: