Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种简单的方法可以在dojox.gfx的形状上添加工具提示_Dojo_Tooltip_Gfx - Fatal编程技术网

有没有一种简单的方法可以在dojox.gfx的形状上添加工具提示

有没有一种简单的方法可以在dojox.gfx的形状上添加工具提示,dojo,tooltip,gfx,Dojo,Tooltip,Gfx,我在中找到了一个解决方案,但它只适用于Dojo1.4 对于dojo版本1.7,没有dojox.gfx.tooltip。请注意…这是一个老问题,但在上下搜索之后,我一直没有找到答案,所以我的工作是在gfx形状上显示工具提示。当HTML5Canvas是渲染器时,这专门用来解决这个问题,但应该与其他渲染器一起使用。这是在Dojo和Dojox1.8中完成的;没有在其他版本中尝试过 主要技巧是使用dijit.Tooltip的static show()和hide()方法,为它们提供构建工具提示的信息,而不是

我在中找到了一个解决方案,但它只适用于Dojo1.4


对于dojo版本1.7,没有dojox.gfx.tooltip。请注意…

这是一个老问题,但在上下搜索之后,我一直没有找到答案,所以我的工作是在gfx形状上显示工具提示。当HTML5Canvas是渲染器时,这专门用来解决这个问题,但应该与其他渲染器一起使用。这是在Dojo和Dojox1.8中完成的;没有在其他版本中尝试过

主要技巧是使用dijit.Tooltip的static show()和hide()方法,为它们提供构建工具提示的信息,而不是创建dijit.Tooltip实例。(dijit.Tooltip实例仅在响应鼠标移动到的特定DOM元素时显示,如果使用画布渲染器,这将不起作用。)使用静态方法,可以将渲染的工具提示定位到任何位置,以响应所需事件。您的主要任务是计算工具提示应该出现的位置,并确保绑定事件以隐藏工具提示()

您可能希望存储自己的自定义对象,其中包含要显示的必要信息();如果有很多工具提示,这可以使工具提示的管理更容易

Tooltip.show()需要以下内容:

  • x、 y、宽度(w)和高度(h)以形成工具提示将出现的矩形区域(“环绕”对象)
  • 一个字符串,用于定义渲染工具提示相对于“around”中定义的矩形的位置。有关可能的值,请参见工具提示API
  • 工具提示的内容
在实现此功能时,需要记住以下几点:

  • 在撰写本文时,形状使用dojo/connect,而不是dojo/on
  • 当您想用hide()隐藏工具提示时,传递到show()中的“around”对象引用用于标识工具提示,而不是它包含的值,因此您不能仅使用具有相同值的新对象来隐藏工具提示;调用show()时需要使用实际引用。(因此有自己的自定义“工具提示”信息对象,便于访问。)
  • “环绕”坐标是绝对值,而不是曲面元素或曲面容器元素值,但形状的坐标将是曲面值。如果这是您的目标,则需要计算绝对值以显示相对于形状的工具提示
关于方法:

对于要使用工具提示的每个形状或组,请在需要显示工具提示时附加相应的事件;鼠标输入,点击,一些按键事件。此事件应调用静态方法Tooltip.show,并绑定相应的事件以在此时使用Tooltip.hide关闭工具提示。我还喜欢在hide()事件触发后立即断开它的连接;在dojo/on中,您可以使用on.once(但据我所知,您还不能将dojo/on用于gfx形状)

var shape1Bb=shape1.getTransformedBoundingBox();
变量shape1工具提示={
内容:“我是一个黑色和灰色的矩形。

”, 大约:{ x:shape1Bb[1].x+myCanvasContainer.offsetLeft, y:shape1Bb[1].y-(数学圆((shape1Bb[1].y-shape1Bb[2].y)/2))+myCanvasContainer.Offsetop, w:1, h:1 }, 位置:[“居中后”、“居中前”] }; 形状1.连接(“onMouseCenter”,函数(e){ Tooltip.show( shape1Tooltip.content, shape1Tooltip.around, shape1工具提示。位置 ); var mouseOutHandler=shape1.connect(“onmouseout”,函数(e){ 隐藏(shape1Tooltip.around); dojo.断开连接(鼠标移出器); }); });
Jsfiddle:

var shape1Bb = shape1.getTransformedBoundingBox();

var shape1Tooltip = {
    content: "<p>I am a black and gray rectangle.</p>",
    around: {
        x: shape1Bb[1].x+myCanvasContainer.offsetLeft,
        y: shape1Bb[1].y-(Math.round((shape1Bb[1].y - shape1Bb[2].y)/2))+myCanvasContainer.offsetTop,
        w: 1,
        h: 1
    },
    position: ["after-centered","before-centered"]
};

shape1.connect("onmouseenter",function(e){
    Tooltip.show(
        shape1Tooltip.content,
        shape1Tooltip.around,
        shape1Tooltip.position
    );
    var mouseOutHandler = shape1.connect("onmouseout",function(e){
        Tooltip.hide(shape1Tooltip.around);
        dojo.disconnect(mouseOutHandler);
    });
});