Я не думаю, что у вас может быть прозрачный холст, однако вы можете реализовать двойную буферизацию на видео при воспроизведении холста, что также улучшит частоту кадров и уменьшит мерцание экрана.
Image bufferImage = (Image) canvas.getData("buffer-image");
Display display = Display.getDefault();
if (bufferImage == null //if there is no image
|| bufferImage.getBounds().width != canvas.getSize().x //if the image is incorrectly sized, which could result in unnecessary expenditures or not drawing everything
|| bufferImage.getBounds().height != canvas.getSize().y) {
bufferImage = new Image(display, canvas.getSize().x, canvas.getSize().y);
canvas.setData("buffer-image", bufferImage);
}
GC bufferImageGC = new GC(bufferImage);
bufferImageGC.setBackground(e.gc.getBackground());
bufferImageGC.setForeground(e.gc.getForeground());
//fill in the background
Rectangle background = bufferImage.getBounds();
bufferImageGC.fillRectangle(0, 0, background.width, background.height);
//draw video here, remember to draw onto bufferImageGC
//draw anything else you want here
Надеюсь, это поможет.