Es genial, pero no hay antialiasing en absoluto. Dibujar con cuadrados de píxeles está atrasado.
Aquí hay un ejemplo que demuestra que el antialiasing existe en la naturaleza:
¿Y el código?
¿Y el código?
De nada:
#property copyright "2009-2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property description "Demonstrating Canvas features" #property script_show_inputs //--- #include <Canvas\CanvasPro.mqh> //+------------------------------------------------------------------+ //| Entradas| //+------------------------------------------------------------------+ input int pause = 20; // retardo en milisegundos entre la salida a la pantalla input bool top = false; // ¿dibujar bajo el gráfico? input ENUM_COLOR_FORMAT format=COLOR_FORMAT_ARGB_NORMALIZE; //Método de tratamiento del color input int Ncirl =30; // número de círculos input int MaxSizeCircle = 200; // tamaño máximo de los círculos //+------------------------------------------------------------------+ //| Función de inicio del programa de script| //+------------------------------------------------------------------+ int OnStart(void) { double r1[],r2[],k1[],k2[]; int x[],y[]; uint col[]; int j=0; ArrayResize(r1,Ncirl); ArrayResize(r2,Ncirl); ArrayResize(k1,Ncirl); ArrayResize(k2,Ncirl); ArrayResize(x,Ncirl); ArrayResize(y,Ncirl); ArrayResize(col,Ncirl); ChartSetInteger(0,CHART_FOREGROUND,top); int Width =(ushort)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS); // obtener la anchura de la ventana int Height=(ushort)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS); // obtener la altura de la ventana uint ColorScreen=(color)ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);// obtener el color de fondo de la ventana CCanvasPro canvas; if(!canvas.CreateBitmapLabel("SampleCanvas",0,0,Width,Height,format)) { Print("Error creating canvas: ",GetLastError()); return(-1); } canvas.SetBack(false); canvas.Erase(ColorScreen); canvas.Update(); srand(GetTickCount()); for(int i=0;i<Ncirl;i++) { x[i]=rand()%Width; y[i]=rand()%Height; r1[i]=rand()%MaxSizeCircle; r2[i]=rand()%MaxSizeCircle; k1[i]=(double)(rand()%10)/1000; k2[i]=(double)(rand()%10)/1000; col[i]=XRGB(rand()%255,rand()%255,rand()%255); } while(!IsStopped()) { canvas.Erase(ColorScreen); for(int i=0;i<Ncirl;i++) canvas.CircleSS(x[i],y[i],r1[i]*fabs(sin(j*k1[i])),r2[i]*fabs(sin(j*k2[i])),col[i]); Sleep(pause); canvas.Update(); j++; } ObjectDelete(0,"SampleCanvas"); canvas.Destroy(); return(0); }
¿Y el código?
El cCanvas estándar ya tiene varios métodos de suavizado para todas las formas, ¿verdad?
Por desgracia. Incluso la última función de círculo basada en el método de Wu contiene errores y da un error notable en el suavizado en lugares diagonales del círculo debido a la primitividad de este método, y es muy subóptima en términos de velocidad. Las formas rellenas especialmente suavizadas simplemente no existen.
¿Y el código?
Bueno, entonces sólo puedo unirme a la pregunta.
Es extraño por qué me haces esta pregunta. Yo no trabajo en Metaquotes, aunque sueño con trabajar allí. Si yo trabajaba en esta empresa, entonces yo sería capaz de trabajar bien en esta cuestión, así como no sólo en la cuestión de suavizado en CCanvas biblioteca, sino también, por ejemplo, en toda regla las funciones 3D en lienzo.
Pero ahora sólo tengo experimentos hechos de rodillas, que tengo miedo de publicar, porque sé que puedo hacerlo mejor, pero se necesita tiempo.
Es extraño que me haga esta pregunta. Yo no trabajo para Metaquotes, aunque sueño con trabajar allí. Si yo trabajaba en esta empresa, entonces yo sería capaz de trabajar bien en este tema, así como no sólo en el tema de anti-aliasing en la biblioteca CCanvas, sino también, por ejemplo, en funciones 3D completo en lienzo.
Pero ahora sólo experimentos, montado sobre mis rodillas, que tengo miedo de publicar, porque sé que puedo hacerlo mejor, pero se necesita tiempo.
Por décima vez, el tema está marcado como no leído, aunque no hay ediciones ni mensajes nuevos.
¿Alguien está trasteando o es que el foro no funciona?
Tengo la sospecha de que el autor (¿autor?) está editando su post.
Otra opción: alguien empezó a escribir un post y lo dejó, ahora este post se cuelga en modo edición, y el foro cada minuto (¿5, 10 minutos?) nota que algo está pasando en el tema.

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Indicadores personalizados e infografía en CCanvas:
En este artículo se analizarán nuevos tipos de indicadores con una estructura de implementación más compleja. Se describirá la construcción de los indicadores de los tipos pseudo-3D y la creación de infografías que cambian de manera dinámica.
Ya hemos analizado las clases y los principios de construcción de figuras complejas con la ayuda de primitivas. En la clase de la construcción de indicadores de tipo histograma se ha tocado parcialmente el tema de la construcción de un espacio bidimensional de objetos que parecen estar en 3D (fig.13) gracias a la elección del color. Sin embargo, la pirámide no es una figura plana, por eso, al construirla en el sistema bidimensional indicado, usaremos su proyección isométrica. La estructura básica no se distingue por su gran número de elementos (fig.14), sin embargo, el método de construcción de la proyección de la pirámide y su visualización son la parte principal de la implementación de esta clase.
Fig.14. Estructura básica de la clase CPyramid.
Autor: Alexander Fedosov