我正在尝试使用Canvas来显示动画gif。我有动画工作,但画布太小,无法看到整个图像,我无法调整大小。
我甚至无法将其设置为第一帧的正确大小,因此省略了动画/线程代码。我的代码如下:
Composite comp = new Composite(parent, SWT.None);
comp.setLayout(new GridLayout(1, false));
final ImageLoader loader = new ImageLoader();
loader.load(getClass().getClassLoader().getResourceAsStream("MYFILE.gif"));
final Canvas canvas = new Canvas(comp, SWT.None);
final Image image = new Image(Display.getCurrent(), loader.data[0]);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
e.gc.drawImage(image, 0, 0);
}
});
无论MYFILE.gif有多大,帆布区最终都是一个大约30x30的小盒子。怎么了?
我尝试用来设置画布大小(setSize,setBounds等)的任何内容都不起作用。
答案 0 :(得分:2)
尝试使用setPreferredSize
。布局管理器会调用setSize
和/或setBounds
并破坏您设置的值,但如果可以,它会尝试尊重首选大小。您还可以使用setMaximumSize
和setMinimumSize
来控制如果调整封闭组件的大小,画布将如何调整大小。
编辑:对于SWT,你可以试试这个:
GridData gridData = new GridData();
gridData.widthHint = imageWidth;
gridData.heightHint = imageHeight;
canvas.setLayoutData(gridData);
我不是SWT专家,但the SWT documentation似乎很有帮助。