1

我创建 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

4

1 回答 1

0

SmartGWT 中似乎存在问题,或者 SmartClient 中完成的某些修复尚未移至 SmartGWT。
以前有一个问题,他们修复了鼠标事件,但旋钮仍然不起作用。

使用 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());
    }
});

在此处输入图像描述

在SmartClient/SmartGWT 论坛上发帖可能是个好主意。

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

于 2013-04-26T20:07:52.767 回答