Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich habe das Beispiel der GButton-Klasse fast fertig, muss aber weglaufen. Ich werde sie morgen fertigstellen und präsentieren.
Großartig. Sehr interessant. )
Das ist das Ergebnis.
Die Schaltfläche kann im Hintergrund oder im Vordergrund angezeigt werden, mit oder ohne Verriegelungsfunktion.
In der Beispieldatei CanvasButton.mq5 ist es möglich, die Schaltfläche mit der Maus zu ziehen. Drücken Sie dazu einfach die Strg-Taste, um die blaue Schaltfläche zu bewegen, und die Umschalttaste, um die rote Schaltfläche zu bewegen.
Da die GButton-Klasse ein Nachkomme der CCanvas-Klasse ist, demonstriert das Beispiel die Möglichkeit, Funktionen der CCanvas-Klasse im CircleWu-Beispiel zu verwenden (dies wird in OnInit implementiert). So ist es möglich, mit Funktionen der CCanvas-Klasse Text auf die Schaltfläche zu schreiben.
Diese Klasse gibt natürlich nicht vor, sauber zu sein. Die Grafik glänzt nicht mit Perfektion und 3D ist sehr konventionell; die Schatten sind nicht implementiert, die Ausführungsgeschwindigkeit ist nicht optimiert. Und höchstwahrscheinlich gibt es viele Ecken und Kanten und verschiedene Kontrollen fehlen. Urteilen Sie also nicht streng.
Wenn Sie etwas mehr Zeit investieren, ist das natürlich möglich:
Ich habe nur versucht... man könnte sagen - eine Richtung vorgeben.
Die Datei Canvas.mqh unterscheidet sich von der Originaldatei nur dadurch, dass das Array m_pixels als öffentlich definiert ist.
Wir haben Folgendes erhalten.
Die Schaltfläche kann im Hintergrund oder im Vordergrund angezeigt werden und kann angeklickt oder nicht angeklickt sein.
In der Beispieldatei CanvasButton.mq5 ist es möglich, die Schaltfläche mit der Maus zu ziehen. Drücken Sie dazu einfach die Strg-Taste, um die blaue Schaltfläche zu bewegen, und die Umschalttaste, um die rote Schaltfläche zu bewegen.
Da die GButton-Klasse ein Nachkomme der CCanvas-Klasse ist, demonstriert das Beispiel die Fähigkeit, Funktionen der CCanvas-Klasse auf dem CircleWu-Beispiel zu verwenden (dies wird in OnInit implementiert). So ist es möglich, mit Funktionen der CCanvas-Klasse Text auf die Schaltfläche zu schreiben.
Diese Klasse gibt natürlich nicht vor, sauber zu sein. Die Grafik glänzt nicht mit Perfektion und 3D ist sehr konventionell; die Schatten sind nicht implementiert, die Ausführungsgeschwindigkeit ist nicht optimiert. Und höchstwahrscheinlich gibt es viele Ecken und Kanten und verschiedene Kontrollen fehlen. Urteilen Sie also nicht zu hart.
Wenn Sie etwas mehr Zeit investieren, können Sie das natürlich auch tun:
Ich habe nur versucht... man könnte sagen - die Richtung vorgeben.
Die Datei Canvas.mqh unterscheidet sich von der Originaldatei nur dadurch, dass das Array m_pixels als öffentlich definiert ist.
Nikolay, meiner Meinung nach ist es ziemlich gut geworden. Wir haben einen guten Anfang gemacht und können noch weiter gehen. Ich würde diese Art von Taste als Schlüssel bezeichnen. Wenn Sie 4 klare Rahmenlinien haben: - oben, links, hell und rechts, unten - dunkel für den gedrückten Zustand und umgekehrt, wird es noch besser sein (müssen nur einen hellen Hintergrund hinzufügen, da sonst die dunklen Linien auf einem schwarzen Hintergrund Chart wird nicht sichtbar sein). Und dann können Sie Text und Bild einstellen.
Wie auch immer, netter Versuch. )
. Wenn Sie die 4 klaren Linien des Rahmens entlang der Ränder teilen: - oben, links hell und rechts, unten dunkel für den gedrückten Zustand und umgekehrt für den gedrückten Zustand, wird es noch besser (Sie müssen nur einen hellen Hintergrund hinzufügen, sonst sind die dunklen Linien vor dem schwarzen Diagramm nicht sichtbar).
Ja, es ist klar, dass Sie zeichnen können, was Sie wollen. In diesem Fall habe ich mir nicht das Ziel gesetzt, ein Meisterwerk zu schaffen. Aber die erste Sache, die ich verbessern möchte, ist, alle Arrays der Schaltfläche Bild (zwei Arrays in diesem Fall) zu generieren und dann kopieren Sie sie nur durch ArrayCopy, so dass wir nicht haben, um ein Bild jedes Mal zu erstellen. Dies wird die Arbeit stark zu reduzieren, aber auf Kosten der zusätzlichen Verbrauch von RAM, sondern weil es jetzt üblich ist, auf Computern 16 GB RAM, und wenn es sogar eine Menge von Tasten, die zusätzlichen Speicherverbrauch ist unwahrscheinlich, dass 1-2 MB überschreiten, vor allem, wenn die gleichen Tasten werden die gleichen Arrays verwenden. Ich denke also nicht, dass das ein Problem ist. Die Hauptsache ist die Geschwindigkeit.
Ich verstehe. Als ich die Frage nach der Schaltfläche stellte, wollte ich herausfinden, ob es möglich ist, dies mit einer Leinwand zu tun:
Gepresst:
Gepresst:
In diesem Beispiel besteht jede Seite des Rahmens aus mehreren Zeilen. Auf jeder Seite des Rahmens befinden sich insgesamt 4 Farbverlaufslinien. Jede Linie hat einen anderen Farbton, der vom Zustand der Schaltfläche und der gegebenen Form des Rahmens abhängt. Wenn CCanvas die Möglichkeit hat, die Farbe für bestimmte Verlaufslinien des Rahmens festzulegen, dann ist es einfach, das obige Beispiel umzusetzen. Das ist genau das, was ich herausfinden wollte.
Ich verstehe. Als ich die Frage nach der Schaltfläche stellte, wollte ich herausfinden, ob es möglich ist, dies mit einer Leinwand zu tun:
Gepresst:
Gepresst:
In diesem Beispiel besteht jede Seite des Rahmens aus mehreren Zeilen. Auf jeder Seite des Rahmens befinden sich insgesamt 4 Farbverlaufslinien. Jede Zeile hat einen anderen Farbton, der vom Zustand der Schaltfläche und der gegebenen Form des Rahmens abhängt. Wenn CCanvas die Möglichkeit hat, die Farbe für bestimmte Verlaufslinien des Rahmens festzulegen, dann ist es einfach, das obige Beispiel umzusetzen. Das ist genau das, was ich herausfinden wollte.
Ich kann dich nicht verstehen, Peter. Sie sprechen von Fleisch und ich von Skelett. Wenn du Knochen hast, kannst du Fleisch hinzufügen. Steht in meinem Beispiel nicht "Pressed, Pressed"? Haben Sie schon einmal in die Klasse GButton geschaut? Peter, mein Rat: Lassen Sie alles stehen und liegen und lernen Sie dringend OOP. Sie sind in Ihrem Projekt an eine Grenze gestoßen, die als aufgeblähter Code bezeichnet wird und mit Hilfe von OOP leicht zu überwinden ist.
))) Warum habe ich also dieses Thema begonnen? ) Ich werde jetzt OOP studieren.
Ihr Beispiel hat Schaltflächen, Klick-Ereignisse und Zustände dieser Schaltflächen. Alles ist in Ordnung. Aber Nikolai, ich verstehe immer noch nicht, was ich gefragt habe - gibt es eine Option in der CCcanvas-Klasse, um eine bestimmte Farbe für die Verlaufslinien des Rahmens festzulegen? Wenn man sich Ihr Beispiel ansieht, könnte man meinen, dass es... Wenn ja, können Sie etwas Ähnliches wie mein Beispiel zeichnen? Ich interessiere mich für die Einfachheit und die Möglichkeiten des Zeichnens mit den Funktionen dieser Klasse, und Sie sprechen von Geschwindigkeit und Verbesserungen der Funktionen der Klasse. Das ist ein etwas anderes Thema.
))) Warum habe ich also dieses Thema begonnen? ) Ich werde mich jetzt mit OOP befassen.
Es ist besser, das Erlernen von OOP mit etwas einfacherem als Canvas zu beginnen.
Haben Sie schon einmal in die Klasse GButton geschaut?