Компоновка наложения SWT

Я хочу иметь прозрачный холст.

У меня есть холст, на котором отображается видео. Мне нужен холст поверх видео, чтобы я мог нарисовать прямоугольник поверх видео, чтобы выбрать область видео для какой-либо другой цели (например, масштабирование, съемка изображения и т. д.).

Возможно ли это в SWT?

Спасибо.


person user295843    schedule 17.03.2010    source источник
comment
Не могли бы вы предоставить какой-нибудь код, чтобы я мог попробовать?   -  person Paul Lammertsma    schedule 20.03.2010
comment
Я тоже хотел бы знать, как это сделать.   -  person Robben_Ford_Fan_boy    schedule 05.06.2016


Ответы (1)


Я не думаю, что у вас может быть прозрачный холст, однако вы можете реализовать двойную буферизацию на холсте, воспроизводящем видео, что также улучшит частоту кадров и уменьшит мерцание экрана.

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

Надеюсь, это поможет.

person Lane Aasen    schedule 27.05.2011