Re: Dynamic Control of Graphics
- To: mathgroup at smc.vnet.net
- Subject: [mg105088] Re: Dynamic Control of Graphics
- From: dh <dh at metrohm.com>
- Date: Fri, 20 Nov 2009 06:40:38 -0500 (EST)
- References: <he0oae$4ov$1@smc.vnet.net>
PeterSF wrote:
> I am new to the dynamic features of the Mathematica fron end. Having spent a
> considerable amount of time, I am still strufggling with the following
> problem: how to control dynamically individual elements of a combined graphics?
> Specifically, we are given
> Show[ Plot[ Sin[x], {x,0,Pi} ], Graphics[ { textColor, Text
> ["Test"] } ],
> Graphics[ { lineWidth,
> Line[{ {0,0}, {0,2}] } ] ]
> The objective is to change:
> * the color of text (the 2nd element) if and only if a mouse is
> over that text;
> * the thickness of the line (the 3rd element) if and only if a
> mouse is
> over that line.
> I can see how to handle these simultaneously:
>
> DynamicModule[ { lineWidth = Thin, textColor = Blue},
> Dynamic @ EventHandler[ Show[ Plot[Sin[x], {x, 0, \[Pi]} ],
> Graphics[{ textColor, Text["XXX", {1, 1}]}],
> Graphics[{ lineWidth, Line[{{0, 0}, {2, 1}}]}]],
> "MouseClicked" :> (textColor = Red, lineWidth )]]
>
> The question is, how can one control the wdth and the color
> individually?
>
> More broadly, I need to perform the following tasks: upon mouseover to
> change the appearance of a single graphics element (line, text, etc.);
> then, upon mouse click, to store in a variable which elements was
> selected (clicked over); and, upon pressing of the Delete key, to
> remove that element from the combined graphics.
>
> I would be most greatful for any and all of the help you could give
> me.
> Peter.
>
>
Hi Peter,
an event handler handles the whole region of the corresponding graphics
object. It can not distinguish between parts of it.
Daniel