On Sat, May 23, 2009 at 8:27 AM, Ronggui Huang <ronggui.huang at gmail.com>
wrote:
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.
You need to be drawing the rectangle within expose_fn, otherwise it won't
show up. There should be no need to access the GdkWindow (da2) of the
drawing area outside of expose_fn.
Michael
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>:
On Fri, May 22, 2009 at 11:27 PM, Ronggui Huang
<ronggui.huang at gmail.com>
wrote:
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.
The GtkImage widget is just for showing images. If you want to start
doing
interactive graphics, I'd suggest moving to the more general
GtkDrawingArea
widget and connecting to the expose-event signal. You can then use
GdkPixbuf
for loading and drawing the image onto the drawing area. And then draw a
rectangle on top with gdkDrawRectangle().
See demos drawingArea and images.
Michael