Bibliothèque: cIntBMP - bibliothèque pour la création d'images au format BMP

 

cIntBMP - bibliothèque pour la création d'images au format BMP:

Une classe pour créer et afficher des images au format BMP.

cIntBMP - bibliothèque pour la création d'images au format BMP

Author: Dmitry Fedoseev

 
Sur Windows 7 64 bit, ne fonctionne pas.
 
barnix:
Sur Windows 7 64 bit ne fonctionne pas.
Corrigé. Veuillez le télécharger à nouveau.
[Supprimé]  

J'essaie d'en créer un transparent. Mais cela ne fonctionne pas. Vous pourriez trouver un bug. Ou une fonction cIntBMP Trasnparent Add.

//+------------------------------------------------------------------+
//|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"
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme de script|
//+------------------------------------------------------------------+

#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);


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

/* routine de mélange alpha */
int AlphaBlend(int bg, int src)
{
int alpha = 100;
return (src * alpha / 255 + bg * (255 - alpha) / 255);

   int a = src >> 24;    /* alpha */
 
   /* Si le pixel source est transparent, il suffit de renvoyer l'arrière-plan */
   if (0 == a) return (bg);

   /* mélange alpha des couleurs de la source et de l'arrière-plan */
 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:

Ou une fonction cIntBMP Trasnparent Add.

Vous n'avez pas besoin d'une telle fonction, vous devrez recalculer et mettre à jour l'ensemble de l'image à chaque tic-tac. La machine est en fer, mais laissez-la s'occuper de tâches plus utiles.
 
Est-il possible d'utiliser cette bibliothèque SANS la dll qu'elle appelle ( fonctions du fichier à l'intérieur du code) ?
 
Les gars, il y a peut-être d'autres moyens d'améliorer l'image ?
 
Dmitry Fedoseev chaque tic-tac. La machine est en fer, mais laissez-la s'occuper de tâches plus utiles.

Vous voulez dire que la seule façon d'avoir de la transparence sur ces objets rectangles et triangles est de reproduire la solution que nous avons ici dans cet article ? Étudier la classe CCanvas. Comment dessiner des objets transparents - Articles MQL5

Studying the CCanvas Class. How to Draw Transparent Objects
Studying the CCanvas Class. How to Draw Transparent Objects
  • www.mql5.com
Do you need more than awkward graphics of moving averages? Do you want to draw something more beautiful than a simple filled rectangle in your terminal? Attractive graphics can be drawn in the terminal. This can be implemented through the CСanvas class, which is used for creating custom graphics. With this class you can implement transparency, blend colors and produce the illusion of transparency by means of overlapping and blending colors.