Librerie: cIntBMP - libreria per la creazione di immagini in formato BMP

 

cIntBMP - libreria per la creazione di immagini in formato BMP:

Una classe per creare e visualizzare immagini in formato BMP.

cIntBMP - libreria per la creazione di immagini in formato BMP

Author: Dmitry Fedoseev

 
Su Windows 7 64 bit non funziona.
 
barnix:
Su Windows 7 64 bit non funziona.
Corretto. Scaricatelo di nuovo.
[Eliminato]  

Sto cercando di crearne uno trasparente. Ma non funziona. Si potrebbe trovare un bug. Oppure una funzione 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"
//+------------------------------------------------------------------+
//| Funzione di avvio del programma di 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 di fusione alfa */
int AlphaBlend(int bg, int src)
{
int alpha = 100;
return (src * alpha / 255 + bg * (255 - alpha) / 255);

   int a = src >> 24;    /* alfa */
 
   /* Se il pixel di origine è trasparente, restituisce solo lo sfondo */
   if (0 == a) return (bg);

   /* miscelazione alfa dei colori di origine e di sfondo */
 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:

Oppure una funzione cIntBMP Trasnparent Add.

Non avete bisogno di una funzione del genere, perché dovrete ricalcolare e aggiornare l'intera immagine a ogni spunta. La macchina è di ferro, ma lasciate che si occupi di compiti più utili.
 
Esiste la possibilità di utilizzare questa libreria SENZA la dll che richiama (file funzioni all'interno del codice)?
 
Ragazzi, forse ci sono altri modi per migliorare l'immagine?
 
Dmitry Fedoseev ogni spunta. La macchina è di ferro, ma lascia che si occupi di compiti più utili.

Volete dire che l'unico modo per avere la trasparenza su quegli oggetti rettangolo e triangolo è riprodurre la soluzione che abbiamo qui in questo articolo? Studiate la classe CCanvas. Come disegnare oggetti trasparenti - Articoli 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.