Aлександр Антошкин: Орел с двумя головами в разном виде, цвете и исполнении находился на нашем гербе свыше пяти веков - со времен Московского государства времен Ивана III и до 1918 года ,как следствии генной мутации.....
Что же вы хотите исправить у Петра?
что-то логики не поймал. Где Вы увидели, что я что-то у кого-то хочу исправить?
что-то логики не поймал. Где Вы увидели, что я что-то у кого-то хочу исправить?
Это такой тонкий троллинг. Намек что я, - неисправимое следствие генной мутации.)) Почитал другие посты автора, и подумалось что он сам, - экспериментальный ИИ запущенный на нашем форуме. ))
А возможно использовать Canvas для создания панелей? (CAppDialog)
Напрямую, при помощи Add() объект CCanvas, очевидно, не добавить к панели.
Может быть существует обходной путь, например, в начале создать ресурс, а потом, рассматривая его как более простой объект, можно привязать к CAppDialog?
Но я не очень даже понимаю, какие функции использовать, чтобы попробовать провернуть такой трюк.
В общем, помогите!
В этой теме столько всего великолепного, что моя задачка кажется на этом фоне совсем простенькой!
А возможно использовать Canvas для создания панелей? (CAppDialog)
Напрямую, при помощи Add() объект CCanvas, очевидно, не добавить к панели.
Может быть существует обходной путь, например, в начале создать ресурс, а потом, рассматривая его как более простой объект, можно привязать к CAppDialog?
Но я не очень даже понимаю, какие функции использовать, чтобы попробовать провернуть такой трюк.
В общем, помогите!
В этой теме столько всего великолепного, что моя задачка кажется на этом фоне совсем простенькой!
Боюсь, что не получится. Ибо CAppDialog рисуется на объектах OBJ_RECTANGLE, а CCanvas это объект OBJ_BITMAP_LABEL и их никак не скрестить. Но можно канвас рисовать сверху окна панели и отслеживать изменения панели и одновременно перерисовывать канвас.
Например так:
// это эксперт#define protectedpublic// увы, это необходимо, чтобы расширить наши возможности #include <Controls\Dialog.mqh>
#include <Canvas\Canvas.mqh>
#undef protected
CAppDialog D;
CCanvas C;
intOnInit()
{
if(!D.Create(0,"AppWindow",0,100,100,400,300))
return(INIT_FAILED);
D.Run();
if(!C.CreateBitmapLabel(D.m_chart_id,D.m_subwin,D.m_name+"_Canvas",D.m_rect.left,D.m_rect.top,D.m_rect.right-D.m_rect.left,D.m_rect.bottom-D.m_rect.top,COLOR_FORMAT_ARGB_NORMALIZE))
Print("Error creating canvas: ",GetLastError());
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
D.Destroy(reason);
C.Destroy();
}
//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong& lparam,
constdouble& dparam,
conststring& sparam)
{
staticint X=0, Y=0;
D.ChartEvent(id,lparam,dparam,sparam);
if (D.m_rect.left!=X || D.m_rect.top!=Y)
{ DrawCanvas(); X=D.m_rect.left; Y=D.m_rect.top;}
}
//+------------------------------------------------------------------+void DrawCanvas()
{
// изменяем канвас в соответсвии положения и размера панелиstaticint w=0, h=0, tf=0;
int x=D.m_rect.left;
int y=D.m_rect.top;
int width = D.m_rect.right-x;
int height =D.m_rect.bottom-y;
ObjectSetInteger(C.m_chart_id,C.m_objname,OBJPROP_XDISTANCE,x);
ObjectSetInteger(C.m_chart_id,C.m_objname,OBJPROP_YDISTANCE,y);
if (w!=width) ObjectSetInteger(C.m_chart_id,C.m_objname,OBJPROP_XSIZE,width);
if (h!=height) ObjectSetInteger(C.m_chart_id,C.m_objname,OBJPROP_YSIZE,height);
if(w!=width || h!=height || tf!=_Period)
{
C.Erase();
// здесь формируем рисунок на панели
C.FillCircle(50,20,30,ColorToARGB(clrViolet,200));
C.FillCircle(100,100,50,ColorToARGB(clrLightBlue,100));
C.Rectangle(200,50,250,150,ColorToARGB(clrAqua));
//----------------------------------
C.Update();
tf=_Period;
w=width;
h=height;
}
}
но так как панель - это набор объектов, то просто добавиться к этому набору еще один.
Так что вариант вполне рабочий и канвас рисуется только в одном месте( в данном случае функция DrawCanvas) в координатах панели и не надо заботиться о его привязки к панели и перерисовке.
Орел с двумя головами в разном виде, цвете и исполнении находился на нашем гербе свыше пяти веков - со времен Московского государства времен Ивана III и до 1918 года ,как следствии генной мутации.....
что-то логики не поймал. Где Вы увидели, что я что-то у кого-то хочу исправить?
что-то логики не поймал. Где Вы увидели, что я что-то у кого-то хочу исправить?
Это такой тонкий троллинг. Намек что я, - неисправимое следствие генной мутации.)) Почитал другие посты автора, и подумалось что он сам, - экспериментальный ИИ запущенный на нашем форуме. ))
https://www.mql5.com/ru/forum/221552/page1485#comment_12959767
Так и тики можно представить?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Индикаторы: Тиковый индикатор ZoomPrice
fxsaber, 2016.11.01 21:10
Я про то, что бы тики представить в виде баров - по 5 секунд допустим.
Здравствуйте!
А возможно использовать Canvas для создания панелей? (CAppDialog)
Напрямую, при помощи Add() объект CCanvas, очевидно, не добавить к панели.
Может быть существует обходной путь, например, в начале создать ресурс, а потом, рассматривая его как более простой объект, можно привязать к CAppDialog?
Но я не очень даже понимаю, какие функции использовать, чтобы попробовать провернуть такой трюк.
В общем, помогите!
В этой теме столько всего великолепного, что моя задачка кажется на этом фоне совсем простенькой!
Здравствуйте!
А возможно использовать Canvas для создания панелей? (CAppDialog)
Напрямую, при помощи Add() объект CCanvas, очевидно, не добавить к панели.
Может быть существует обходной путь, например, в начале создать ресурс, а потом, рассматривая его как более простой объект, можно привязать к CAppDialog?
Но я не очень даже понимаю, какие функции использовать, чтобы попробовать провернуть такой трюк.
В общем, помогите!
В этой теме столько всего великолепного, что моя задачка кажется на этом фоне совсем простенькой!
Боюсь, что не получится.
Ибо CAppDialog рисуется на объектах OBJ_RECTANGLE, а CCanvas это объект OBJ_BITMAP_LABEL и их никак не скрестить.
Но можно канвас рисовать сверху окна панели и отслеживать изменения панели и одновременно перерисовывать канвас.
Например так:
но так как панель - это набор объектов, то просто добавиться к этому набору еще один.
Так что вариант вполне рабочий и канвас рисуется только в одном месте( в данном случае функция DrawCanvas) в координатах панели и не надо заботиться о его привязки к панели и перерисовке.
Да, спасибо, Алексей. Тормознул ))
Поправил.
Боюсь, что не получится.
Ибо CAppDialog рисуется на объектах OBJ_RECTANGLE, а CCanvas это объект OBJ_BITMAP_LABEL и их никак не скрестить.
Спасибо! Этот вариант вполне реалистично выглядит!
А возможно расширить CAppDialog, и включить в него OBJ_BITMAP_LABEL?
Спасибо! Этот вариант вполне реалистично выглядит!
А возможно расширить CAppDialog, и включить в него OBJ_BITMAP_LABEL?
Конечно можно, было бы желание и время.