125 lines
5.3 KiB
MQL5
125 lines
5.3 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| Picture.mqh |
| |||
//| Copyright 2000-2025, MetaQuotes Ltd. |
| |||
//| https://www.mql5.com |
| |||
//+------------------------------------------------------------------+
| |||
#include "WndObj.mqh"
| |||
#include <ChartObjects\ChartObjectsBmpControls.mqh>
| |||
//+------------------------------------------------------------------+
| |||
//| Class CPicture |
| |||
//| Note: image displayed by |
| |||
//| the CChartObjectBmpLabel object |
| |||
//+------------------------------------------------------------------+
| |||
class CPicture : public CWndObj
| |||
{
| |||
private:
| |||
CChartObjectBmpLabel m_picture; // chart object
| |||
//--- parameters of the chart object
| |||
int m_border; // border width
| |||
string m_bmp_name; // filename
| |||
| |||
public:
| |||
CPicture(void);
| |||
~CPicture(void);
| |||
//--- create
| |||
virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
| |||
//--- parameters of the chart object
| |||
int Border(void) const { return(m_border); }
| |||
bool Border(const int value);
| |||
string BmpName(void) const { return(m_bmp_name); }
| |||
bool BmpName(const string name);
| |||
| |||
protected:
| |||
//--- internal event handlers
| |||
virtual bool OnCreate(void);
| |||
virtual bool OnShow(void);
| |||
virtual bool OnHide(void);
| |||
virtual bool OnMove(void);
| |||
virtual bool OnChange(void);
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
CPicture::CPicture(void) : m_border(0),
| |||
m_bmp_name(NULL)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
CPicture::~CPicture(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create a control |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
| |||
{
| |||
//--- call method of the parent class
| |||
if(!CWndObj::Create(chart,name,subwin,x1,y1,x2,y2))
| |||
return(false);
| |||
//--- create the chart object
| |||
if(!m_picture.Create(chart,name,subwin,x1,y1))
| |||
return(false);
| |||
//--- call the settings handler
| |||
return(OnChange());
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Set border width |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::Border(const int value)
| |||
{
| |||
//--- save new value of parameter
| |||
m_border=value;
| |||
//--- set up the chart object
| |||
return(m_picture.Width(value));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Set image |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::BmpName(const string name)
| |||
{
| |||
//--- save new value of parameter
| |||
m_bmp_name=name;
| |||
//--- set up the chart object
| |||
return(m_picture.BmpFileOn(name));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create object on chart |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::OnCreate(void)
| |||
{
| |||
//--- create the chart object by previously set parameters
| |||
return(m_picture.Create(m_chart_id,m_name,m_subwin,m_rect.left,m_rect.top));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Display object on chart |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::OnShow(void)
| |||
{
| |||
return(m_picture.Timeframes(OBJ_ALL_PERIODS));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Hide object from chart |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::OnHide(void)
| |||
{
| |||
return(m_picture.Timeframes(OBJ_NO_PERIODS));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Absolute movement of the chart object |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::OnMove(void)
| |||
{
| |||
//--- position the chart object
| |||
return(m_picture.X_Distance(m_rect.left) && m_picture.Y_Distance(m_rect.top));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Set up the chart object |
| |||
//+------------------------------------------------------------------+
| |||
bool CPicture::OnChange(void)
| |||
{
| |||
//--- set up the chart object
| |||
return(m_picture.Width(m_border) && m_picture.BmpFileOn(m_bmp_name));
| |||
}
| |||
//+------------------------------------------------------------------+
|