Diskussion zum Artikel "Die benutzerdefinierten Indikatoren und die Informationsgrafik in CCanvas"
Das ist cool, aber es gibt überhaupt kein Anti-Aliasing. Das Zeichnen mit Pixelquadraten ist nicht mehr zeitgemäß.
Hier ist ein Beispiel, das zeigt, dass Antialiasing in der Natur existiert:
Und der Code?
Und der Code?
Gern geschehen:
#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> //+------------------------------------------------------------------+ //| Eingaben| //+------------------------------------------------------------------+ input int pause = 20; // Verzögerung in Millisekunden zwischen den Ausgaben auf dem Bildschirm input bool top = false; // unter das Diagramm zeichnen? input ENUM_COLOR_FORMAT format=COLOR_FORMAT_ARGB_NORMALIZE; //Farbverarbeitungsmethode input int Ncirl =30; // Anzahl der Kreise input int MaxSizeCircle = 200; // maximale Größe der Kreise //+------------------------------------------------------------------+ //| Skript-Programmstartfunktion| //+------------------------------------------------------------------+ 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); // Fensterbreite ermitteln int Height=(ushort)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS); // Ermitteln der Fensterhöhe uint ColorScreen=(color)ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);// Hintergrundfarbe des Fensters ermitteln 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); }
Und der Code?
Der Standard cCanvas hat bereits mehrere Glättungsmethoden für alle Formen, richtig?
Leider. Selbst die letzte Kreisfunktion, die auf der Wu-Methode basiert, enthält Fehler und führt aufgrund der Primitivität dieser Methode zu einem deutlichen Fehler bei der Glättung an diagonalen Stellen des Kreises und ist in Bezug auf die Geschwindigkeit sehr suboptimal. Besonders geglättete gefüllte Formen gibt es einfach nicht.
Und der Code?
Nun, dann kann ich mich der Frage nur anschließen.
Es ist seltsam, warum Sie mir diese Frage stellen. Ich arbeite nicht bei Metaquotes, obwohl ich davon träume, dort zu arbeiten. Wenn ich in diesem Unternehmen arbeiten würde, könnte ich diese Frage gut bearbeiten, und zwar nicht nur die Frage der Glättung in der CCanvas-Bibliothek, sondern zum Beispiel auch vollwertige 3D-Funktionen in Canvas.
Aber jetzt habe ich nur Experimente, die ich auf meinen Knien gemacht habe und die ich mich nicht traue zu veröffentlichen, weil ich weiß, dass ich es besser machen kann, aber es braucht Zeit.
Es ist merkwürdig, warum Sie mir diese Frage stellen. Ich arbeite nicht für Metaquotes, obwohl ich davon träume, dort zu arbeiten. Wenn ich in diesem Unternehmen arbeiten würde, könnte ich gut an diesem Thema arbeiten, und nicht nur am Thema Anti-Aliasing in der CCanvas-Bibliothek, sondern zum Beispiel auch an vollen 3D-Funktionen in Canvas.
Aber jetzt sind es nur Experimente, die ich auf meinen Knien zusammengebaut habe, und ich habe Angst, sie zu veröffentlichen, weil ich weiß, dass ich es besser machen kann, aber es braucht Zeit.
Zum 10. Mal wird das Thema als ungelesen markiert, obwohl es keine Änderungen oder neuen Beiträge gibt.
Macht da jemand Mist oder hat das Forum eine Fehlfunktion?
Zum 10. Mal wird das Thema als ungelesen markiert, obwohl es keine Änderungen oder neuen Beiträge gibt.
Macht da jemand Mist oder hat das Forum eine Fehlfunktion?
Ich habe den Verdacht, dass der Autor (Verfasser?) seinen Beitrag bearbeitet.
Eine andere Möglichkeit: Jemand hat angefangen, einen Beitrag zu schreiben und aufgehört, jetzt hängt dieser Beitrag im Bearbeitungsmodus, und das Forum stellt jede Minute (5, 10 Minuten?) fest, dass sich im Thema etwas tut.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.

Neuer Artikel Die benutzerdefinierten Indikatoren und die Informationsgrafik in CCanvas :
Im Artikel werden die neuen Arten der Indikatoren mit einer komplizierteren strukturellen Realisierung betrachtet. Es werden der Aufbau der pseudoräumlichen Typen der Indikatoren und die Erstellung einer dynamisch ändernden Informationsgrafik beschrieben.
Jedoch die Pyramide — keine flache Figur, deshalb bei ihrem Aufbau im gegebenen zweidimensionalen Koordinatensystem verwenden wir ihre isometrische Projektion. Die grundlegende Struktur unterscheidet sich nicht durch die große Anzahl der Elemente (die Abb. 14), aber nichtsdestoweniger, die Art des Aufbaues der Pyramide-Projektion und ihre Visualisierung — ist der Hauptteil der Realisierung dieser Klasse.
in Abb.14. Die grundlegende Struktur der Klasse CPyramid.
Autor: Alexander Fedosov