Files
2025-06-24 00:33:04 +01:00

48 lines
4.5 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//+------------------------------------------------------------------+
//| Canvas_Background.mq5 |
//| Copyright 2021, Dark Ryd3r |
//| https://twitter.com/DarkRyd3r |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, Dark Ryd3r"
#property link "https://twitter.com/DarkRyd3r"
#property version "1.00"
#include <Canvas\Canvas_shader.mqh>
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart() {
//---
ChartSetInteger ( 0, CHART_FOREGROUND, true );
CCanvas C;
int Width=( ushort ) ChartGetInteger ( 0, CHART_WIDTH_IN_PIXELS ); // we get the width of the window
int Height=( ushort ) ChartGetInteger ( 0, CHART_HEIGHT_IN_PIXELS ); // get the Height of the window
if (!C.CreateBitmapLabel( 0, 0, "CanvasExamlple", 0, 0,Width,Height, COLOR_FORMAT_XRGB_NOALPHA )) // сcreate a canvas with the size of the current window
Print ( "Error creating canvas: ", GetLastError ());
uint i= 0,j= 100000 ;
int size=Width*Height;
uchar h[ 25600 ];
for ( int w= 0 ; w< 25600 ; w++)
h[w]= uchar ( 128 + 128 * sin ( double (w)/ 256 )); //create an array to speed up work
double X1= 0,Y1= 0,X2= 0,Y2= 0 ;
while (! IsStopped ()) {
int pos= int (i%size);
if (pos== 0 ) {
C.Update();
//Sleep(100);
X1= Width-( sin (( double )j/ 100 )*( double )Width);
Y1= Height-( cos (( double )j/ 140 )*( double )Height);
X2= Width+( cos (( double )j/ 80 )*( double )Width);
Y2= Height+( sin (( double )j/ 20 )*( double )Height);
j++;
}
int X=pos+Width;
int Y= int (pos%Width);
double d= ((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))/(((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))+((X2-X)*(X2-X)+(Y2-Y)*(Y2-Y)));
C.m_pixels[pos]=XRGB(h[ int (d* 11520 )],h[ int (d* 17920 )],h[ int (d* 6400 )]);
i++;
}
C.Destroy();
}
//+------------------------------------------------------------------+