Библиотеки: cIntBMP - библиотека для создания изображений в формате BMP

 

cIntBMP - библиотека для создания изображений в формате BMP:

Класс для создания и отображения BMP изображений.

Методы:
  • Create(int aSizeX, int aSizeY, int aBGColor) - установка размеров изображения и цвета фона.
  • SetDrawWidth(int aWidth) - установка толщины рисования.
  • DrawDot(int aX, int aY, int aColor) - рисование точки.
  • DrawLine(int aX1,int aY1, int aX2, int aY2, int aColor) - рисование линии.
  • DrawRectangle(int aX1, int aY1, int aX2, int aY2, int aColor, bool aSolid=false) - рисование прямоугольника.
  • DrawTriangle(int aX1, int aY1, int aX2, int aY2, int aX3, int aY3, int aColor, bool aSolid=false) - рисование треугольника.
  • DrawCircle(int aX, int aY, int aRadius1, int aRadius2, int aColor, double aRatio=1.0, double aAngleFrom=0.0, double aAngleTo, bool aSolid=false) - рисование окружности.
  • Fill(int aX, int aY, int aColor) - заливка одноцветной области.
  • TypeText(int aX, int aY, int aColor) - печать текста на изображении.
  • Save(string aFileName, bool aToImages=true) - сохранение созданного изображение в файл.
  • Show(int aX, int aY, string aBMPFileName, string aObjectName) - отображение изображения на графике.
  • Hide(string aObjectName) - удаление графического объекта с указанным именем.
  • Delete(string aFileName, bool aFromImages=true) - удаление файла.

Автор: Дмитрий

cIntBMP - Треугольники. Метод DrawTriangle()

Треугольники. Метод DrawTriangle()

Прямоугольники. Метод DrawRectangle()

Прямоугольники. Метод DrawRectangle()


cIntBMP - Сектора. Метод DrawCircle()

Сектора. Метод DrawCircle()


cIntBMP - Заливка. Метод Fill()

Заливка. Метод Fill()

 

Я пытаюсь создать прозрачный. Но это не работает. Можно было бы найти ошибку. Или один cIntBMP Trasnparent Добавить функции.

 

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

#import "user32.dll"
   int GetDC(int hwnd);
   int ReleaseDC(int hwnd,int hdc);
#import "gdi32.dll"
 int GetPixel(int hdc,int x,int y);
 int SetPixel(int hdc,int x,int y, int c); 
#import

void OnStart()
  {
   
int i, H, V, shH=0, shV=0, header;
  double hgh;
  color screen [80][80];
  color r, g, b, cv=Red;

//---
long  hwnd=ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE);
int   hdc=GetDC((int)hwnd);
   
 

for(V=0; V<80; V++)
{
   for(H=0; H<80; H++)
   {
   screen[V][H]=GetPixel(hdc,V,H); 
   
   }
}

for(V=0; V<80; V++)
{
   for(H=0; H<80; H++)
   {

   cv=screen[V][H];
   
     cv=AlphaBlend(cv ,clrRed );

   SetPixel(hdc, V+shV,H+shH,cv);
  
   }
}


Sleep(3000);


  }
//+------------------------------------------------------------------+

/* alpha blend routine */
int AlphaBlend(int bg, int src)
{
int alpha = 100;
return (src * alpha / 255 + bg * (255 - alpha) / 255);

   int a = src >> 24;    /* alpha */
 
   /* If source pixel is transparent, just return the background */
   if (0 == a) return (bg);

   /* alpha blending the source and background colors */
 int rb = (((src & 0x00ff00ff) * a) +  
      ((bg & 0x00ff00ff) * (0xff - a))) & 0xff00ff00;
 int    g  = (((src & 0x0000ff00) * a) + 
      ((bg & 0x0000ff00) * (0xff - a))) & 0x00ff0000;
 
    return (  (src & 0xff000000) | ((rb | g) >> 8)   );
}


 

 
FinGeR:

Или один cIntBMP Trasnparent Добавить функции.

Не нужна такая функция, потребуется на каждом тике все изображение персчитывать и обновлять. Машина хоть и железная, но пусть она занимается более полезными задачами.