Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
1

Canvas конфликтует с прозрачностью панели

22.08.2016, 15:41. Показов 770. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Наткнулся на странное место и не могу понять, почему так. Все раньше получалось, но здесь.. Я решил, так же, как и в игре, в интерфейсе, сделать главное меню в несколько слоев, на заднем крутить openGL-картинки, а выше панели с кнопками, выдвигающиеся.

И все получается, но.. ни одна панель не может согласоваться с openGL на заднем плане! Какого.. что не так с этим ГЛ?!

ВОТ ПАНЕЛЬ, КУДА Я ВЕШАЮ КАНВАС С "ВИДЕО", она прикрепляется на САМЫЙ НИЖНИЙ СЛОЙ фрейма меню:

Java
1
2
3
4
5
6
7
8
9
     centerPanel.add(upTextedPanel, BorderLayout.NORTH);
    centerPanel.add(canvas, BorderLayout.CENTER);
    centerPanel.add(downTextedPanel, BorderLayout.SOUTH);
    
    getLayeredPane().add(centerPanel, new Integer(0));
    getLayeredPane().add(upPanel, new Integer(1));
    
    logoAnimator = new FPSAnimator(canvas, 60, true);
    logoAnimator.start();
А ВОТ СЛЕДОМ ЗА НИМ ИДЕТ upPanel, КОТОРАЯ СОДЕРЖИТ ДВЕ ПАНЕЛЬКИ, С ПРОЗРАЧНЫМ ФОНОМ, РИСУЮТСЯ ЧЕРЕЗ paintComponent-ы свои каждая и кладутся на панель upPanel по западу и востоку. У ВСЕГО setOpaque(false)! У всех панелей.

-------------------------------------

ИТАК: Я запускаю игру и что же я вижу?! Вот что:

Canvas конфликтует с прозрачностью панели


Кажется, что ничего не вышло и ГЛ не запустился, но стоит отодвинуть верхнюю upPanel в сторону - сразу ясно, что все рисуется, а вот почему-то толку от этого нет. Хотя, повторюсь, upPanel setOpaque(false). Я даже пытался сделать ей setBackground(new Color(0,0,0,0)) - бестолку!

Canvas конфликтует с прозрачностью панели


И, заметьте! текстовые лейблы панели с Канвасом видны! А сам канвас отрисовывается лишь ВНЕ фона верней панели с черными рисунками!

Canvas конфликтует с прозрачностью панели


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

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
upPanel = new JPanel(new BorderLayout())
{
private static final long serialVersionUID = 1L;
BufferedImage bbuffer;
ImageIcon II;
Image Im;
Graphics2D g2d;
public void bufferOpaque()
{
II = new ImageIcon(Library.opaqueFon);
Im = II.getImage();
bbuffer = new BufferedImage(MainMenu.centerPanel.getWidth(), MainMenu.centerPanel.getHeight(), BufferedImage.TYPE_INT_ARGB);
g2d = bbuffer.createGraphics();
g2d.drawImage(Im, 0, 0, bbuffer.getWidth(), bbuffer.getHeight(), null);
}
@Override
public void paintComponent(Graphics g)
{
if (bbuffer == null)
{
bufferOpaque();
}
g2d = (Graphics2D) g;
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
g2d.drawImage(bbuffer, MainMenu.centerPanel.getWidth(), MainMenu.centerPanel.getHeight(), null);
}
};
Но ничего не помогает. КАК это сделано в Майнкрафт, к примеру?!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2016, 15:41
Ответы с готовыми решениями:

Тормозит отображение объектов на панели с прозрачностью
Доброго Подскажите как увеличить скорость отображения объектов на форме? 1. У формы обычный...

Подскажите - как переконвертировать gif с прозрачностью - в swf с прозрачностью
Всем привет. У меня есть gif с прозрачностью, после конвертации в swf - прозрачность исчезла. ...

Возможно ли масштабирование панели canvas с всем ее содержимым
Возможно ли масштабирование панели canvas с всем ее содержимым? Тоесть чтоб все содержимое...

Canvas html5, как разместить черный пискель в центре canvas'a?
как разместить черный пискель в центре canvas'a?

1
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
27.08.2016, 19:24  [ТС] 2
Ответа нет. Решения тоже.. чтож, буду пытаться сделать иначе..
0
27.08.2016, 19:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2016, 19:24
Помогаю со студенческими работами здесь

Можно ли одной процедурой рисовать на Image.Canvas и Printer.Canvas
Здравствуйте, пожалуйста, подскажите можно ли одной процедурой рисовать на Image.Canvas и...

построить функцию y=kx+b (линейная функция) с помощью Vcart или canvas (form.canvas)
Надо построить функцию y=kx+b (линейная функция) с помощью Vcart или canvas (form.canvas)

Как добиться одинакового размера шрифта при выводе на Image.Canvas и Printer.Canvas
Здравствуйте! Подскажите, пожалуйста, как добиться одинакового размера шрифта при выводе на...

Конфликтует noConflict()
Здравствуйте. Фаербаг ругается на noConflict() в первой строчке скрипта: var $j =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru