Oi@Nikolai Semko, você poderia me dizer se é possível fazer um objeto transparente sobre texto em uma camada de tela, veja a foto? O segundo círculo transparente é a segunda camada, este objeto não é um problema para eu fazer transparente.
Mais uma pergunta, como inserir uma imagem em uma camada de tela ou devo colocá-la como uma camada adicional? Sei que é um recurso, mas não consigo colocá-lo para funcionar, você pode me mostrar uma amostra de código?
Se a transparência (COLOR_FORMAT_ARGB_NORMALIZE) for utilizada, a transparência de duas camadas tr1 e tr2 deve ser misturada por fórmula
double tr=tr1+tr2-tr1*tr2; // где tr, tr1, tr1 меняются от нуля (абсолютная прозрачность) до 1(абсолютная непрозрачность)
Exemplo de um roteiro com círculos aleatórios de cores e transparência aleatória:
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164#define Num 100//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
// инициализация случайных окружностейuint X[Num],Y[Num],sr[Num],clr[Num],Rmin[Num],Rmax[Num];
double sx[Num],sy[Num];
for(int i=0; i<Num; i++)
{
X[i]=rand()%3141;
Y[i]=rand()%3141;
sr[i]=rand()%3141;
sx[i]=0.3+0.7*(double)rand()/32767.0;
sy[i]=0.3+0.7*(double)rand()/32767.0;
clr[i]=ARGB(rand()%256,rand()%256,rand()%256,rand()%256);
int r2=5+rand()%100;
int r1=5+rand()%100;
Rmin[i]=(int)fmin(r1,r2);
Rmax[i]=(int)fmax(r1,r2);
}
// формирование изображения из Num (= 100) полупрозрачных круговdouble j=0;
while(!IsStopped())
{
Canvas.Erase();
Canvas.CurentFont("Arial",30);
Canvas.TextPosY=100;
Canvas.Comm("Hello World!");
for(int i=0; i<Num; i++)
{
Circle(W.Width/2*(1+sin((X[i]+sx[i]*j)*M_PI/1000)),
W.Height/2*(1+sin((Y[i]+sy[i]*j)*M_PI/1000)),
Rmin[i]+double(Rmax[i]-Rmin[i])/2*(1.0+cos((j+sr[i])*M_PI/1000)),clr[i]);
}
Canvas.Update();
j+=0.3;
Sleep(30);
}
}
//+------------------------------------------------------------------+void Circle(double x,double y,double r,uint clr)
{
double R2=r*r;
for(int X=Round(x-r); X <=Round(x+r);X++)
for(int Y=Round(y-r); Y<=Round(y+r);Y++)
if(((x-X)*(x-X)+(y-Y)*(y-Y))<=R2) Canvas.PixelSet(X,Y,MixColor(clr,Canvas.PixelGet(X,Y)));
}
//+------------------------------------------------------------------+uint MixColor(uint clr,uint clrback)// смешиваем цвет и прозрачность clr c цветом и прозрачностью фона clrback
{
argb C,Bg;
if(clrback==0) return clr;
C.clr=clr;
if(C.c[3]==255) return clr;
Bg.clr=clrback;
double tr=C.c[3]/255.0;
double trb=Bg.c[3]/255.0;
C.c[2]=uchar(Bg.c[2]+tr*(C.c[2]-Bg.c[2]));
C.c[1]=uchar(Bg.c[1]+tr*(C.c[1]-Bg.c[1]));
C.c[0]=uchar(Bg.c[0]+tr*(C.c[0]-Bg.c[0]));
C.c[3]=uchar((trb+tr-trb*tr)*255.0+0.49999);
return C.clr;
}
//+------------------------------------------------------------------+
Tenho mais uma pergunta: como inserir uma imagem em uma camada de tela ou devo colocá-la como uma camada adicional? Entendo que de alguma forma através de um recurso, mas não consigo obter nada, você pode me mostrar um exemplo de código?
Você pode ver como trabalhar com fotos aqui . Afinal, uma imagem é a mesma que um conjunto de pontos. Este exemplo mostra como converter recursos de dois arquivos bmp em arrays BMP1[], BMP2[] e trabalhar com estes arrays em uma única tela.
Sergey Golubev: Vi seu posto em inglês. Quero pedir-lhe que poste mais na parte em inglês, incluindo KodaBase (seu material é muito popular lá). Apenas para informações.
Obrigado. Farei o meu melhor.
Entretanto, pareceu-me que na parte de língua inglesa do fórum, a reação às minhas mensagens foi próxima de zero. A sensação o tempo todo é que "silenciosamente para mim mesmo...".
Oi@Nikolai Semko, você poderia me dizer se é possível fazer um objeto transparente sobre texto em uma camada de tela, veja a foto? O segundo círculo transparente é a segunda camada, este objeto não é um problema para eu fazer transparente.
Mais uma pergunta, como inserir uma imagem em uma camada de tela ou devo colocá-la como uma camada adicional? Sei que é um recurso, mas não consigo colocá-lo para funcionar, você pode me mostrar uma amostra de código?
Se a transparência (COLOR_FORMAT_ARGB_NORMALIZE) for utilizada, a transparência de duas camadas tr1 e tr2 deve ser misturada por fórmula
Exemplo de um roteiro com círculos aleatórios de cores e transparência aleatória:
@Nikolai Semko
Tenho mais uma pergunta: como inserir uma imagem em uma camada de tela ou devo colocá-la como uma camada adicional? Entendo que de alguma forma através de um recurso, mas não consigo obter nada, você pode me mostrar um exemplo de código?
Você pode ver como trabalhar com fotos aqui .
Afinal, uma imagem é a mesma que um conjunto de pontos.
Este exemplo mostra como converter recursos de dois arquivos bmp em arrays BMP1[], BMP2[] e trabalhar com estes arrays em uma única tela.
Muito obrigado Nikolai, finalmente consegui resolver isso.
Seja bem-vindo.
Primeiras experiências com o cronograma dinâmico.
EURUSD toda a história em dinâmica:
.
A fractalidade é evidente.Primeiras experiências com o cronograma dinâmico.
EURUSD toda a história em dinâmica:
.
A fractalidade é evidente.Favor postar mais em inglês, incl. CodaBase (seu material é muito popular lá).
Para informações.
Vi seu posto em inglês.
Quero pedir-lhe que poste mais na parte em inglês, incluindo KodaBase (seu material é muito popular lá).
Apenas para informações.
Primeiras experiências com o cronograma dinâmico.
EURUSD toda a história em dinâmica:
.
A fractalidade é evidente.Primeiras experiências com o cronograma dinâmico.
EURUSD toda a história em dinâmica:
.
A fractalidade é evidente.Bastante visual, interessante.
Podemos visualizar os carrapatos também desta maneira?