Новая версия платформы MetaTrader 5 build 5370: улучшения в веб-версии - страница 32

 
Denis Clusterdelta #:

Господа разработчики,

а что случилось с Alpha слоем ? Даже в 5445 еще все работало после перехода на новый движок, в 5483 - вся полупрозрачность стала полностью непрозрачной. 

Уже исправлено в 5484. Дождитесь обновления. 


 
Anatoli Kazharski #:

Уже исправлено в 5484. Дождитесь обновления. 


НЕ исправлено...

Forum on trading, automated trading systems and testing trading strategies

[BUG] MT5 Build 5440 (21 Nov 2025): Critical GUI Rendering Issue in Custom MQL Applications

Andrey Barinov, 2025.12.06 15:14

Here is all together summorized.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit(void)
   {
   ::EventSetTimer(1);
   
//===============
   const string canvasname   = "testcanvas";
   const string resoursename = "::"+canvasname+".bmp";
   const uint width          = 500;
   const uint height         = 500;
   const uchar alfa          = 0;
   const uint clr            = ::ColorToARGB(clrWhite,alfa);
//===============

//===============
   uint canvasdata[];
   ::ArrayResize(canvasdata,width*height,0);
   ::ArrayInitialize(canvasdata,clr);
//===============

//===============
   ::ResourceCreate(resoursename,canvasdata,width,height,0,0,width,COLOR_FORMAT_ARGB_RAW);
//===============

//===============
   ::ObjectCreate(0,canvasname,OBJ_BITMAP_LABEL,0,0,0);
//===============

//===============
   ::ObjectSetInteger(0,canvasname,OBJPROP_ZORDER,0);
   ::ObjectSetInteger(0,canvasname,OBJPROP_BACK,false);
   ::ObjectSetInteger(0,canvasname,OBJPROP_CORNER,CORNER_LEFT_UPPER);
   ::ObjectSetInteger(0,canvasname,OBJPROP_SELECTABLE,true);
   ::ObjectSetInteger(0,canvasname,OBJPROP_SELECTED,true);
   ::ObjectSetInteger(0,canvasname,OBJPROP_STATE,false);
   ::ObjectSetInteger(0,canvasname,OBJPROP_HIDDEN,true);
   ::ObjectSetString(0,canvasname,OBJPROP_TOOLTIP,NULL);
   ::ObjectSetInteger(0,canvasname,OBJPROP_XDISTANCE,100);
   ::ObjectSetInteger(0,canvasname,OBJPROP_YDISTANCE,100);
   ::ObjectSetInteger(0,canvasname,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER);
   ::ObjectSetString(0,canvasname,OBJPROP_BMPFILE,0,resoursename);
   ::ObjectSetString(0,canvasname,OBJPROP_BMPFILE,1,resoursename);
//===============

//===============
   ::ObjectSetInteger(0,canvasname,OBJPROP_XSIZE,width);
   ::ObjectSetInteger(0,canvasname,OBJPROP_YSIZE,height);
//===============

//===============
   ::ChartRedraw(0);
//===============

   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer(void)
   {
   ::ChartRedraw(0);
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+


Behaviour in b5430. ALL CORRECT, as expected. Absolutely transparent canvas.

5430


build 5463. Correct only in color scheme Color on White. All other color schemes are wrong...

5463


 

Попробуйте заменить формат:

::ResourceCreate(resoursename,canvasdata,width,height,0,0,width,COLOR_FORMAT_ARGB_NORMALIZE);
 
Andrey Barinov #:

НЕ исправлено...

Уточню, что я использую в своих библиотеках только COLOR_FORMAT_ARGB_NORMALIZE

После обновления на 5484 у меня всё стало отображаться правильно во всех режимах смешивания ARGB-цветов. 

Документация по MQL5: ResourceCreate / Общие функции
Документация по MQL5: ResourceCreate / Общие функции
  • www.mql5.com
Создает ресурс изображения на основе набора данных. Существует два варианта функции: Создание ресурса на основе файла Динамическое создание ресурса...
 
Yuriy Bykov #:

Попробуйте заменить формат:

То, что баг можно обойти, не отменяет того, что баг есть. Я просто констатирую факт, что не все починено с прозрачностью. Для себя я все решил уже :)
 
Andrey Barinov # :

NOT corrected...


Андрей, нет необходимости повторять это каждый раз. Можете быть уверены, MetaQuotes получил сообщение об ошибке, и она будет исправлена.
 
Yuriy Bykov #:

Это просто кошмар. Пришлось повозиться, чтобы разобраться, что не нравится MT5. Выяснилось, что нельзя устанавливать текст после установки шрифта Wingdings. Точнее, в момент установки текста шрифт объекта должен быть не Wingdings. Поэтому вместо строки 

пришлось написать

Другая подлость была в функции CharToString(). Видимо, использовать её нежелательно. Если вы уже знаете коды нужных вам символов, то лучше поступить так:

Или можно так:

И затем уже массив chars преобразовывать в строку:


В общем, достаточно грустно выглядят эти танцы с бубном. Вот полный код, который давал результат:


Спасибо!

Вечером попробую, но это действительно слишком костыльно.

 
Vitaly Muzichenko # :

Thank you!

I’ll try it tonight, but it’s really too crutch.

Попробуйте вот это:

int OnInit(void)
 {
  string txt = "é";
  string arrowObj = "Arrow";
  if(ObjectFind(0, arrowObj) < 0)
   {
    ObjectCreate(0, arrowObj, OBJ_LABEL, 0, 0, 0);
    ObjectSetInteger(0, arrowObj, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
    ObjectSetInteger(0, arrowObj, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
    ObjectSetInteger(0, arrowObj, OBJPROP_XDISTANCE, 50);
    ObjectSetInteger(0, arrowObj, OBJPROP_YDISTANCE, 50);
    ObjectSetInteger(0, arrowObj, OBJPROP_FONTSIZE, 14);
    ObjectSetString(0, arrowObj, OBJPROP_FONT, "Wingdings");
    ObjectSetInteger(0, arrowObj, OBJPROP_BACK, false);
   }
  ObjectSetString(0, arrowObj, OBJPROP_TEXT, txt);
  return(INIT_SUCCEEDED);
 }
 
Alain Verleyen #:

Попробуйте вот это:

Пробовал

Вот это попробуйте

int OnInit(void)
 {
  string txt = "й";
  string arrowObj = "Arrow";
  if(ObjectFind(0, arrowObj) < 0)
   {
    ObjectCreate(0, arrowObj, OBJ_LABEL, 0, 0, 0);
    ObjectSetInteger(0, arrowObj, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
    ObjectSetInteger(0, arrowObj, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
    ObjectSetInteger(0, arrowObj, OBJPROP_XDISTANCE, 50);
    ObjectSetInteger(0, arrowObj, OBJPROP_YDISTANCE, 50);
    ObjectSetInteger(0, arrowObj, OBJPROP_FONTSIZE, 14);
    ObjectSetString(0, arrowObj, OBJPROP_FONT, "Wingdings");
    ObjectSetInteger(0, arrowObj, OBJPROP_BACK, false);
   }
  ObjectSetString(0, arrowObj, OBJPROP_TEXT, txt);
  return(INIT_SUCCEEDED);
 }
 
Vitaly Muzichenko # :

Пробовал

Итак, каков результат?