DrawPane缩放后旋钮偏移

时间:2013-04-24 08:37:37

标签: smartgwt

我创建了DrawRect

    DrawRect drawRect = new DrawRect();
    drawRect.setDrawPane(pane);
    drawRect.setLeft(x-25);
    drawRect.setTop(y-25);
    drawRect.setWidth(50);
    drawRect.setHeight(50);
    drawRect.setFillColor("#FF0000");
    drawRect.setFillOpacity(0.2f);

    drawRect.setCanDrag(true);
    drawRect.setKnobs(KnobType.RESIZE);

    drawRect.draw();

和旋钮效果很好。但是当我在DrawPane上更改缩放时

     zoomLevel = pane.getZoomLevel();
     pane.zoom(zoomLevel+0.001f);

我不能使用旋钮,因为它们会移动。 看起来像这样 http://clip2net.com/s/4XXJmY

1 个答案:

答案 0 :(得分:0)

SmartGWT似乎存在问题,或者SmartClient中的某些修复工作尚未转移到SmartGWT。
他们在鼠标事件中修复了之前的issue,但仍然无法使用旋钮。

使用smartgwt-4.0d / LGPL / 2013-04-25和GWT 2.4.0后,我无法在缩放后使用旋钮。
我甚至在drawRect.showKnobs(KnobType.RESIZE);内尝试了DrawHandler.onDraw(),这并未改变行为。

缩放触发器(按钮单击处理程序/等)中的drawRect.getKnobs()drawRect.getResizeKnobPoints()都具有正确的值(它们在缩放之前/之后没有更改)。

在缩放期间,DrawPane.getDrawItems()在缩放前后都显示了单独的DrawItem个旋钮实例。

用于查看鼠标事件如何受缩放影响 在给定图像中突出显示的区域内放大/缩放之前,它们的效果似乎相同。

final Label label = new Label();
label.setWidth100();
label.setHeight(20);
label.setContents("event details");

drawRect.addClickHandler(new com.smartgwt.client.widgets.drawing.events.ClickHandler() {
    public void onClick(com.smartgwt.client.widgets.drawing.events.ClickEvent clickEvent) {
        label.setContents("mouse click: " + clickEvent.toDebugString() + "; " + new Date().getTime());
    }
});
drawRect.addMouseMoveHandler(new MouseMoveHandler() {
    public void onMouseMove(MouseMoveEvent mouseMoveEvent) {
        label.setContents("mouse move: " + mouseMoveEvent.toDebugString() + "; " + new Date().getTime());
    }
});

enter image description here

SmartClient/SmartGWT forum中发帖可能是个好主意。

有点相关 - http://forums.smartclient.com/showthread.php?t=21345&highlight=DrawPane+zooming