gpt4 book ai didi

Java swt 删除/撤消绘画命令

转载 作者:行者123 更新时间:2023-11-30 11:37:20 24 4
gpt4 key购买 nike

考虑 -

public class MainCanvas extends Canvas {...}

Display display = new Display();
display = new Display();
myShell = new Shell(display);
myCanvas = new MainCanvas(myShell, SWT.NO);
GC myGC = new GC(myShell);
myGC.fillOval(10,20,30,40) ; //paint shape ..

现在我想从 Canvas 中删除 myGC.fillOval(10,20,30,40) ; 绘制的形状。

是否有删除上次绘制的命令,或清除 Canvas 的命令?

最佳答案

很好的问题。我刚开始使用 JAVA SWT,我遇到了同样的问题。

我想出的解决方案是用一个新的 Canvas 替换,每次我必须清空它的内容而不影响任何其他东西时都是相同的。

为此,我正在使用 canvas.dispose() 命令并使用 shell.redraw()shell.pack 重绘和重新打包 Shell () 以便正确调整窗口大小。这些命令是从另一个事件调用的,例如按下按钮(下面提供的示例中的 Enter 按钮)。另外,请注意,在下面的示例中,我使用的是 GridLayout(有关更多信息,请参阅 http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html),并且我正在使用整数数组创建多段线。

    myCanvas = new Canvas(shell, SWT.BORDER); // create the initial instance of the Canvas
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
gridData.widthHint = 1100; // set desired width
gridData.heightHint = 800; // set desired height
gridData.verticalSpan = 3; // set number of columns it will occupy
myCanvas.setLayoutData(gridData);


myEnter_Button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent mainEvent) {
myCanvas.dispose(); // delete the Canvas
myCanvas = new Canvas(shell, SWT.BORDER);
GridData redrawGridData = new GridData(GridData.FILL, GridData.FILL, true, true);
redrawGridData.widthHint = 1100;
redrawGridData.heightHint = 800;
redrawGridData.verticalSpan = 3;
myCanvas.setLayoutData(redrawGridData);
shell.redraw();
shell.pack(); // pack shell again

myCanvas.addPaintListener(new PaintListener() {
public void paintControl(final PaintEvent event) {
// coordinateIntegerArray not displayed in this example
event.gc.drawPolyline(coordinateIntegerArray);//draw something

}
}
});

myCanvas.redraw();
}
});

希望对您有所帮助。如果我设法找到一种专门删除/撤消最后绘制的绘画对象的方法,我一定会通知您。

干杯!

关于Java swt 删除/撤消绘画命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14090654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com