ClickPane
更多信息和选项
- 点击窗格中的图像可为图形或任意其它表达式.
- 对于 Graphics 对象 g,ClickPane[g,func] 缺省取 func 的坐标范围作为 g 中对应于 PlotRange 中的图形坐标范围.
- 对于一般表达式,ClickPane[expr,func] 使坐标范围在每个方向都为 0 至 1.
- ClickPane 接受以下选项:
-
Method "Preemptive" 使用的计算方法 PassEventsDown Automatic 是否将事件传递给内部事件处理程序 PassEventsUp True 是否将事件传递给外部事件处理程序
范例
打开所有单元 关闭所有单元基本范例 (2)
DynamicModule[{pt = {0, 0}}, ClickPane[Dynamic@Graphics[{Yellow, Disk[], Black, Point[pt]}, ImageSize -> Tiny], (pt = #)&]]DynamicModule[{pt = {0, 0}}, ClickPane[Framed@Graphics[{Yellow, Dynamic@Disk[pt]}, PlotRange -> 5], (pt = #)&]]范围 (2)
选项 (3)
Method (1)
默认情况下,在抢占式链接上计算函数,并在 5 秒后超时停止计算:
DynamicModule[{pt = {0, 0}}, {ClickPane[Framed@Graphics[{Yellow, Dynamic@Disk[pt]}, PlotRange -> 5], (Pause[6];pt = #)&], Dynamic[pt]}]通过设置 Method->"Queued" 在主链接上计算函数,不会超时停止计算:
DynamicModule[{pt = {0, 0}}, {ClickPane[Framed@Graphics[{Yellow, Dynamic@Disk[pt]}, PlotRange -> 5], (Pause[6];pt = #)&, Method -> "Queued"], Dynamic[pt]}]PassEventsDown (1)
默认情况下,点击按钮将触发 ClickPane,但不是按钮:
DynamicModule[{pt = {0, 0}}, {ClickPane[Framed[Graphics[Inset[Button["print", Print["fish"]]]]], (pt = #)&], Dynamic[pt]}]用 PassEventsDown 启用点击,注册按钮:
DynamicModule[{pt = {0, 0}}, {ClickPane[Framed[Graphics[Inset[Button["print", Print["fish"]]]]], (pt = #)&, PassEventsDown -> True], Dynamic[pt]}]PassEventsUp (1)
DynamicModule[{outer = {0, 0}, inner = {0, 0}}, Column[{Framed[ClickPane[Row[{"Outer click pane", Framed[ClickPane[{"Inner click pane"}, (inner = #)&]]}], (outer = #)&]], {"outer", Dynamic[outer]}, {"inner", Dynamic[inner]}}]]用 PassEventsUp 在击内部窗格时禁用外部窗格:
DynamicModule[{outer = {0, 0}, inner = {0, 0}}, Column[{Framed[ClickPane[Row[{"Outer click pane", Framed[ClickPane[{"Inner click pane"}, (inner = #)&, PassEventsUp -> False]]}], (outer = #)&]], {"outer", Dynamic[outer]}, {"inner", Dynamic[inner]}}]]应用 (6)
ClickPane[Framed@Dynamic@ParametricPlot[f, {t, 0, 10}, PlotRange -> 5], (f = MatrixExp[(| | |
| ---- | --- |
| -1.1 | 0.9 |
| -1.4 | 0.3 |)t].#)&]DynamicModule[{f = {}}, ClickPane[Framed@Dynamic@ParametricPlot[f, {t, 0, 10}, PlotRange -> 5], (AppendTo[f, MatrixExp[(| | |
| ---- | --- |
| -1.1 | 0.9 |
| -1.4 | 0.3 |)t].#])&]]三点成圆[更多信息]:
createCircle[{{x1_, y1_}, {x2_, y2_}, {x3_, y3_}}] := With[{a = Det[(| | | |
| -- | -- | - |
| x1 | y1 | 1 |
| x2 | y2 | 1 |
| x3 | y3 | 1 |)], d = -Det[(| | | |
| ----------- | -- | - |
| x1^2 + y1^2 | y1 | 1 |
| x2^2 + y2^2 | y2 | 1 |
| x3^2 + y3^2 | y3 | 1 |)], e = Det[(| | | |
| ----------- | -- | - |
| x1^2 + y1^2 | x1 | 1 |
| x2^2 + y2^2 | x2 | 1 |
| x3^2 + y3^2 | x3 | 1 |)], f = -Det[(| | | |
| ----------- | -- | -- |
| x1^2 + y1^2 | x1 | y1 |
| x2^2 + y2^2 | x2 | y2 |
| x3^2 + y3^2 | x3 | y3 |)]}, Circle[{-(d/2 a), -(e/2 a)}, Sqrt[(d^2 + e^2/4a^2) - (f/a)]]]createCircle[pts_] := {}DynamicModule[{pts = {}, c = {}}, ClickPane[Framed@Graphics[{Dynamic[c], Point[Dynamic[pts]]}, PlotRange -> 5], (If[Length[pts] < 3, AppendTo[pts, #], pts = {#}];c = createCircle[pts])&]]DynamicModule[{pt = {0, 0}, c = "Red"}, ClickPane[Framed@Graphics[{Red, Disk[], StandardGray, Dynamic@Arrow[{{-2, 0}, pt}], Dynamic@Text[Dynamic[c], {-2, 0}]}], (pt = #;c = If[Norm[pt] < 1, "Red", "White"])&]]DynamicModule[{pt = {π / 2, 3}}, ClickPane[Plot[3Sin[x], {x, -6, 6}, Epilog -> {Dynamic@Arrow[{{1, 5}, pt}], Text["Feature", {2, 5}]}, PlotRange -> 6], (pt = {#[[1]], 3Sin[#[[1]]]})&]]DynamicModule[{pt = {π / 2, 3}}, ClickPane[Plot[3Sin[x], {x, -6, 6}, Epilog -> {Dynamic@Arrow[{{1, 5}, pt}], Text["Extremum", {2, 5}]}, PlotRange -> 6], (With[{x = (2Round[-1 / 2 + #[[1]] / π] + 1)π / 2}, pt = {x, 3Sin[x]}])&]]属性和关系 (1)
ClickPane 是 EventHandler 的一个特例:
DynamicModule[{pts = {}}, ClickPane[Dynamic[Framed@Graphics[Line[pts], PlotRange -> 1]], AppendTo[pts, #]&]]DynamicModule[{pts = {}}, Dynamic@EventHandler[Framed@Graphics[Line[pts], PlotRange -> 1], "MouseClicked" :> AppendTo[pts, MousePosition["Graphics"]]]]可能存在的问题 (1)
DynamicModule[{pts = {}}, ClickPane[Dynamic@Framed@Graphics[Line[pts], PlotRange -> 1], AppendTo[pts, #]&]]用 EventHandler 获取在事件寄存操作中的更多灵活性:
DynamicModule[{pts = {}}, Dynamic@EventHandler[Framed@Graphics[Line[pts], PlotRange -> 1], "MouseDown" :> AppendTo[pts, MousePosition["Graphics"]]]]技术笔记
-
▪
- 动态简介
相关的工作流程
- 使用定位器控件 ▪
- 构建一个 Manipulate
文本
Wolfram Research (2007),ClickPane,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ClickPane.html.
CMS
Wolfram 语言. 2007. "ClickPane." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/ClickPane.html.
APA
Wolfram 语言. (2007). ClickPane. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ClickPane.html 年
BibTeX
@misc{reference.wolfram_2026_clickpane, author="Wolfram Research", title="{ClickPane}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/ClickPane.html}", note=[Accessed: 06-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_clickpane, organization={Wolfram Research}, title={ClickPane}, year={2007}, url={https://reference.wolfram.com/language/ref/ClickPane.html}, note=[Accessed: 06-September-2026]}