我正在用Eclipse Window Builder編輯器構建GUI。 我用Gridlayout製作了一個Composite,並在其中放置了一個Label。 來自另一個類的某些方法會生成一個保存在字節數組中的原始8位1280x1024灰度圖像。 這是我生成我的ImageData等在mainMethod:Java/SWT顯示8位灰度圖像從字節數組
Color white = display.getSystemColor(SWT.COLOR_WHITE);
Color black = display.getSystemColor(SWT.COLOR_BLACK);
PaletteData palette = new PaletteData(255, 255, 255);
imgData = new ImageData(1280, 1024, 8, palette);
imgLabel = new Label(composite_3, SWT.NONE);
imgLabel.setImage(null);
imgLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
我仍然有問題,瞭解究竟是什麼,我應該與PaletteData做,因爲我並不需要的顏色反正。 (顏色)深度應該是8,因爲我希望它有255個灰度值?
這是我setImg法作爲字節[]填充數據,會從另一個線程儘快叫:
public static void setImg(final byte[] b) {
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
imgData.setPixels(0, 0, 1280, b, 0);
img = new Image(Display.getCurrent(), imgData);
Image grayImg = new Image(Display.getCurrent(), img, SWT.IMAGE_GRAY);
imgLabel.setImage(img);
// img.dispose();
}
});
}
我已經試過
imgLabel.setImage(img);
和
imgLabel.setImage(grayImg);
好了第一行現在正確顯示... 看來我只能設置1裏與imgData.setPixels(...)的像素ne是一種無用的imo或我做的其他事情是錯的?