Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: GUI Current pointer location on displayed image
Date: Sat, 7 Nov 2009 01:31:21 +0000 (UTC)
Organization: Greeneridge Sciences Inc
Lines: 33
Message-ID: <hd2il9$c47$1@fred.mathworks.com>
References: <hcvctn$4qa$1@fred.mathworks.com> <hd2f9q$p6q$1@fred.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: webapp-05-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1257557481 12423 172.30.248.35 (7 Nov 2009 01:31:21 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Sat, 7 Nov 2009 01:31:21 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 2056547
Xref: news.mathworks.com comp.soft-sys.matlab:583169


"Richard " <rjtennant@greeneridge.DOTCOM> wrote in message <hd2f9q$p6q$1@fred.mathworks.com>...
> "Richard " <rjtennant@greeneridge.com> wrote in message <hcvctn$4qa$1@fred.mathworks.com>...
> > Ran into a little problem with my GUI program today.  I would like eventually to create lines and boxes on top of a displayed image.  Any help or reference to websites or functions would be much appreciated.
> > 
> > Here's what I did if you are trying to recreate the problem.  Using guide create an axes tagged as Picture.  Then in the m-editor under the function that executes before figure is made visible, display a jpeg on the axes...
> > 
> > axes(handles.Picture)
> > image(imread('Picture.jpg'))  %loads and displays Picture.jpg
> > 
> > Now I want to set up a click-able box using ButtonDownFcn or WindowButtonDownFcn(preferably the previous ButtonDownFcn) , WindowMotionFcn and WindowButtonUpFcn.
> > 
> > I run into a problem with getting my mouse position on the image, 
> > "There is no 'CurrentPoint' property in the 'image' class"
> > Seems like there should be a way of getting mouse location without ginput for an image because you can do it for a normal plot...
> > I'm using 2007b btw
> 
> I am pretty new to OOP and GUI programming and after a day more of research, I found a workable solution.  The point was realizing that the image was a child of the figure and the only child in this case, so get(get(gcf,'Children'),'CurrentPoint') gave me the current mouse position.  Hope this helps someone!

oooh my goodness i just solved my problem!
Well I was trying to draw a box on an image, and was almost gonna give up but... discovered waitforbuttonpress, because I was having problems with WindowButtonMotionFcn trumping every other callback in the queue.
So anyways, kinda a weak solution but here it is.

my start box function is what is executed on ButtonDownFcn
function StartBox(obj,evnt)
pt=get(get(gcf,'Children'),'CurrentPoint')
h=line('Xdata', pt(1,1),'Ydata',pt(1,2))
set(f,'WindowButtonMotion', {@DrawBox,h,pt})
waitforbuttonpress
set(f,'WindowButtonMotion', '')

Where the DrawBox function just gets the current points in the same way and sets the x & y data.  

So when button is pressed, it draws initial point, then DrawBox takes over which is constantly refreshed and does the fancy stuff, but next time a button is pressed, in my case when I want to close the box, the StartBox finishes executing and stops any motion function.  Cool Beans