# Vr: using drawingarea1

**URL:** <https://www.ruby-forum.com/t/vr-using-drawingarea1/225125>\
**Category:** Ruby-Gnome 2\
**Created:** [December 15, 2012, 10:38pm UTC](https://www.ruby-forum.com/t/vr-using-drawingarea1/225125 "2012-12-15T22:38:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [December 15, 2012, 10:38pm UTC](https://www.ruby-forum.com/t/vr-using-drawingarea1/225125/1 "2012-12-15T22:38:14Z")

</div>

Hi there

I put a drawing area into my GUI class:  
window1 / vbox1 / drawingarea1

Can someone tell me how to draw lines circles and boxes on it by mouse?

BR  
Pat

---

<div class="post-metadata">

**Author:** ![patrik\_k](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/977dab/32.png) [@patrik\_k](https://www.ruby-forum.com/u/patrik_k)\
**Post date:** [December 17, 2012, 4:53am UTC](https://www.ruby-forum.com/t/vr-using-drawingarea1/225125/2 "2012-12-17T04:53:21Z")

</div>

You can do it by doing the following, mind you none of this code has  
been  
“tested”, so you will need to tweak a few things, but these are the  
basics  
of what you need to do, to ensure that you capture mouse down, and mouse  
up  
events, as well as motion events for when the user moves the mouse over  
the  
drawing area.

def drawingarea1\_\_button\_press\_event(\*args)  
@capture = true  
if args[1].button == 1 # Left Button down  
@button = :left  
elsif args[1].button == 2 # Middle Button down  
@button = :middle  
elsif args[1].button == 3 # Right Button down  
@button = :right  
end  
@start\_x = args[1].x  
@start\_y = args[1].y  
end

def drawingarea1\_\_button\_release\_event(\*args)  
@capture = false  
@button = nil  
@end\_x = args[1].x  
@end\_y = args[1].y  
end

def drawingarea1\_\_motion\_notify\_event(\*args)  
x, y = @builder[“drawingarea1”].pointer

if @capture  
# Do drawing logic here  
end  
end

hth,

Mario

On Sat, Dec 15, 2012 at 4:38 PM, Patrik K. \<  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:

> –  
> ruby-gnome2-devel-en mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-en](https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-en)

–  
Mario S.  
Fleet Captain  
CO - Geo 99  
CO - USS T’hy’la  
XO - Diplomatic Corps - Second Life  
[http://www.iftcommand.com/chapters/thyla/](http://www.iftcommand.com/chapters/thyla/)

> **[HOME | The Federation](https://www.trekfederation.com)**

---

<div class="post-metadata">

**Author:** ![patrik\_k](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/977dab/32.png) [@patrik\_k](https://www.ruby-forum.com/u/patrik_k)\
**Post date:** [December 18, 2012, 10:52pm UTC](https://www.ruby-forum.com/t/vr-using-drawingarea1/225125/3 "2012-12-18T22:52:02Z")

</div>

> def drawingarea1\_\_motion\_notify\_event(\*args)  
> x, y = @builder[“drawingarea1”].pointer
> 
> if @capture  
> # Do drawing logic here  
> end  
> end

So far, so fine!

by consequently using argv (not args) in the code and enabling all the  
events in Glade for the drawingarea1, I can now capture my mouse actions  
in the drawingarea.

By using:  
argv[1].x and argv[1].y

So, I can read the “mouse pressed” position,  
but how can I draw?

> ```
> # Do drawing logic here
> 
> ```
