Обсуждение статьи "Изучаем класс CCanvas. Реализация прозрачности графических объектов" - страница 5

 
Konstantin Seredkin:

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

Вроде вынесена на передний план, все рисуется за ней, а вот сделки накладываются сверху.


Сейчас не проверю, но возможен такой вариант: панель - настоящая панель - строится на базе CDialog. Позже проверю (через день, два) ...

 
Konstantin Seredkin:

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

Вроде вынесена на передний план, все рисуется за ней, а вот сделки накладываются сверху.


Итак проверил: однозначно, делать нужно настоящую панель на базе класса CDialog. 

А теперь как поставить панель сверху значков "Buy", "Sell": у каждой панели есть значок "Свернуть панель":

Свернуть панель

после того, как Вы свернули панель, а потом снова её развернёте - все объекты в Вашей панели станут сверху всех предыдущих значков. То есть панель после того, как Вы её разворачиваете перерисовывает свои объекты и они будут последними созданными.

 
Vladimir Karputov:

Итак проверил: однозначно, делать нужно настоящую панель на базе класса CDialog. 

А теперь как поставить панель сверху значков "Buy", "Sell": у каждой панели есть значок "Свернуть панель":


после того, как Вы свернули панель, а потом снова её развернёте - все объекты в Вашей панели станут сверху всех предыдущих значков. То есть панель после того, как Вы её разворачиваете перерисовывает свои объекты и они будут последними созданными.


Получается объект OBJ_RECTANGLE_LABEL не может быть в полном приоритете на 100% перед всеми объектами ?

Это получается не доработка самого терминала, что все другие объекты могут быть на заднем плане, а значки и полоски сделок всеравно в приоритете над всем. - не порядок

 
Konstantin Seredkin:

Получается объект OBJ_RECTANGLE_LABEL не может быть в полном приоритете на 100% перед всеми объектами ?

Это получается не доработка самого терминала, что все другие объекты могут быть на заднем плане, а значки и полоски сделок всеравно в приоритете над всем. - не порядок


Скорее нежелание программиста делать правильно свою программу с учётом специфики отрисовки объёктов. Терминал тут не при чём.

 
Konstantin Seredkin:

Получается объект OBJ_RECTANGLE_LABEL не может быть в полном приоритете на 100% перед всеми объектами ?

Это получается не доработка самого терминала, что все другие объекты могут быть на заднем плане, а значки и полоски сделок всеравно в приоритете над всем. - не порядок

Учитываете время создания объектов, это и есть приоритеты, кто последний, тот и сверху.

 
Konstantin Seredkin:

Получается объект OBJ_RECTANGLE_LABEL не может быть в полном приоритете на 100% перед всеми объектами ?

Это получается не доработка самого терминала, что все другие объекты могут быть на заднем плане, а значки и полоски сделок всеравно в приоритете над всем. - не порядок

Да, задание порядка отображения не реализовано нормально. Нужно городить сложные огороды с пересозданием.

 
Andrey Khatimlianskii:

Да, задание порядка отображения не реализовано нормально. Нужно городить сложные огороды с пересозданием.

Поэтому пора-бы разработчикам задуматься о дополнительном параметре при создании объектов.

 
Привет, друг, очень хорошая статья с очень интересным содержанием.
 
Наконец то нашел статью, где мне хоть что то пригодилось.)) Использовал описанный в статье метод смешения двух цветов (верхний и нижний) и получил эффект прозрачности внутри одного канваса. Спасибо.
 
Реter Konow:
Наконец то нашел статью, где мне хоть что то пригодилось.)) Использовал описанный в статье метод смешения двух цветов (верхний и нижний) и получил эффект прозрачности внутри одного канваса. Спасибо.

Это, Петр, слишком просто.

Вот тебе задачка для освоения и закреплении сути вопроса:

 - как смешать два цвета ARGB(a1,r1,g1,b1) и ARGB(a2,r2,g2,b2) в рамках одного слоя, каждый из которых имеет свою прозрачность  a1 и a2?

Без такого смешивания невозможно правильно накладывать друг на друга сглаженные объекты.