Canvas - это круто! - страница 72

Maxim Kuznetsov
19105

чего мелочится, вмонстрачивай уже OpenGL и OSG (http://www.openscenegraph.org/) в Canvas.

тогда не только звёздочки будут летать :-) 

PS/ как surface opengl точно можно использовать "ресурсы" точнее данные для них - GL умеет же рисоваться не только сразу в экране, а просто в массивах; То есть некая совместимость тут есть

The OpenSceneGraph Project Website
  • www.openscenegraph.org
Project website for OpenSceneGraph
Jagg
310
Jagg  
Спасибо Nikolai - составлена версия MT4
Nikolai Semko
9665
Jagg #:
Спасибо Nikolai - составлена версия MT4

Да. 
Но как я и предполагал, происходит иногда заморозка события мыши.
Этот баг MQ врядли исправят. Он происходит, когда расчет внутри OnChartEvent превышает определенное значение (около 10 миллисекунд), после чего происходит заморозка событий OnChartEvent примерно на 300 миллисекунд.  

Обходится этот баг через таймер.

Если поставить меньше 10000 звезд (например 5000), то этот баг может и не появляться.


PS: Как обещал, код сбросил.

Файлы:
Stars.ex4  27 kb
Jagg
310
Jagg  
Спасибо снова Николай - с 3000 он работает идеально с MT4
Nikolai Semko
9665
Andrey Khatimlianskii #:

Так покажи, чтобы все сразу поняли )

Вот наглядный пример с цветными звездами.
Слева от желтой линии сглаженная графика со смешиванием цветов с координатами double.
Справа без сглаживания с int координатами.

На скрине параметр MaxSizeRadius = 2

Файлы:
3DStars.mq5  12 kb
iCanvas_CB.mqh  53 kb
fxsaber
22682
fxsaber  

Думаю, эта ветка самая компетентная по Канвасу, поэтому прошу сэкономить мое время на самостоятельное решение следующей задачи.


Есть уже готовый сгенерированный ресурс, доступ к данным которого идет через ResourceReadImage/ResourceCreate. Ресурс свой - не read-only.

Нужно поместить на эту картинку несколько строк текста.


Грубо говоря, есть Data[]-массив пикселей и Width. Нужно соответствующим образом преобразовать Data[].


ЗЫ Решилось через TextOut - прямо туда прописывается уже готовый Data[]-массив для добавки текста.

Nikolai Semko
9665
fxsaber #:

ЗЫ Решилось через TextOut - прямо туда прописывается уже готовый Data[]-массив для добавки текста.

Да, только один маленький недокументированный нюанс.
Если используете альфа-канал (COLOR_FORMAT_ARGB_NORMALIZE), то перед формированием своего битмапа следует заполнять его не нулями, а 

.Erase(0x00FFFFFF);

иначе края символов будут "рваными"

fxsaber
22682
fxsaber  
Nikolai Semko #:

Да, только один маленький недокументированный нюанс.

Спасибо!