Achtung, Wettbewerb! - Seite 13

 

Ups)

Ich stimme der Option derebane zu, und eine öffentliche Diskussion wäre sehr nützlich.

 
TheXpert:
Ja, das ist ein Problem. Dieses Thema ruft nach komposter und tol64

Ich danke Ihnen. Ich habe nicht an dem Wettbewerb teilgenommen, weil ich gerade an einem sehr großen Projekt arbeite. Sie wird bald für alle zugänglich sein. Es wird viel zu besprechen geben, und es ist vielleicht auch möglich, verschiedene Wettbewerbe auf dieser Grundlage zu organisieren. Ich kann noch keine genaueren Angaben machen. )

 
Also, los geht's :)
Класс для работы с кнопками произвольной формы
Класс для работы с кнопками произвольной формы
  • 2015.03.18
  • Dmitriy Parfenovich
  • www.mql5.com
Класс предназначен для создания интерактивных кнопок на графике цены с различными состояниями.
 
fyords:
Los geht's :)

Meine wird noch getestet... Ich sage Ihnen Bescheid, wenn ich es sehe...

Hinzugefügt:

Hier kommt meine Option:)

 
fyords:

Ich habe es nachgeschlagen - 5 Punkte :) Wenn der Benutzer die Standardbibliothek nicht benötigt, ist Ihre Version besser.

Ich beschäftige mich mit dieser Bibliothek, weil ich ein Programm habe, mit dem ich gerade arbeite und das auf ihrer Grundlage geschrieben wurde. Das Design ist sehr unbeholfen, ich wollte es verbessern. Und hier habe ich gerade einen Wettbewerb bekommen, der für mich sehr relevant ist.

Von den Vorteilen Ihrer Umsetzung:

1) Es gibtkeine Krücken. Ich habe es und Vererbung von Standardklassen und andere Annehmlichkeiten, um die Kompatibilität mit der Standardbibliothek zu erhalten.

2)Schaltflächenstatus und Objektstatus auf der Karte stimmen überein.

3)Funktionen haben Eingabewertprüfung auf Fehler. Ich habe das an einigen Stellen übersehen...

4)Die Schaltflächen werden im Expert Advisor eleganter erstellt (durch verschachtelte Zyklen). Ich habe nicht darüber nachgedacht.

5)Sie können nicht nur den Kartenwinkel, sondern auch den Schaltflächenwinkel einstellen. Ehrlich gesagt - ich weiß nicht, wo es nützlich sein kann :) aber vielleicht...

6) Ich habe6 Bilder. Ich habe 4.

7)CCanvas - Sie können etwas auf die Schaltfläche schreiben, ein paar Funktionen hinzufügen und das war's.Es ist sehr praktisch für mehrsprachige Anwendungen. Ich müsste wieder Krücken machen.

8)Ihr Code ist viel schneller zu verstehen.

Ich habe einige Verbesserungen festgestellt:

1)Wenn Sie den Chat so verkleinern, dass die Taste teilweise verdeckt ist (unten oder oben), wird die Hintergrundbeleuchtung der Taste nicht zurückgesetzt (siehe Bild) .

2)Ich habe keine Möglichkeit gesehen, eine "Antihaft-Schaltfläche" zu erstellen. D.h., die gesunken ist und sofort abfiel (na ja, in Analogie zur Norm).

3)Sie haben eine viel kompliziertere Art, Transparenz zu definieren. Ich verstehe nicht einmal, wie das überall funktioniert. Wenn Sie die Bilder selbst vorbereiten, ist es einfacher, so wie ich es getan habe. D.h.ich nehme einfach die Transparenz aus dem Bild mit der Funktion (dank Integer ):

double GetAlfa(uint  aColor)
  {
   return((aColor>>24)&0xff);
  }

Und dann prüfe ich es mit dem Schwellenwert (ich habe 250 genommen, aber natürlich muss ich eine Funktion hinzufügen, damit ich ihn einstellen kann):

 double alfa=GetAlfa(data[y*m_SizeX+x]);
 if(alfa>250)
   {
    m_T[y*m_SizeX+x]=true;
   }
 else
   {
   m_T[y*m_SizeX+x]=false;
   }

Wenn Sie jedoch mit vorgefertigten Bildern arbeiten, ohne einen grafischen Editor zu öffnen, dann ist Ihre Version wahrscheinlich bequemer.

ZS: Mir ist gerade aufgefallen, dass die CCanvas-Klasse auch eine Funktion zur Definition von Transparenz hat:

#define  GETRGBA(clr)   uchar((clr)>>24)
 

Ich danke Ihnen. Ich schaue mir Ihre an.

MigVRN:

Was mir aufgefallen ist und was verbessert werden könnte: ...

  1. Wenn der Zeiger außerhalb des Fensters geht, wird das Ereignis "Maus bewegen" nicht erzeugt, und daher scheint es unmöglich, diesen Fehler zu beheben.
  2. In der Aufgabe fehlten sie, aber das lässt sich ohne großen Aufwand beheben.
  3. Bei der Transparenz scheint mir alles einfacher zu sein: Nehmen Sie 2e Punkte (den dunkelsten und den hellsten), der Durchschnittswert wird ein Schwellenwert sein. Wenn es im Bild transparente Bereiche gibt, verschiebt sich die dunkelste Farbe gegen 0 und damit auch der Schwellenwert.
    Diese Entscheidung wurde getroffen, weil die gleiche Funktion sowohl mit Transparenz als auch mit einer separaten Maske funktioniert.
    Ich möchte auch erwähnen, dass Sie mit dieser Methode (separate Maske) Bilder ohne Transparenz verwenden können. Nun, vielleicht ist der Entwickler nicht gut mit Grafik-Editoren :)
    Oder Variante mit Angabe der Farbe der Maske - als Variante zur Angabe der weißen Farbe für die grüne Schaltfläche und sie wird "transparent", ohne zusätzliches Tanzen um die Transparenz und zusätzliche Masken.
 
MigVRN:

Ich habe da einen Job für dich gemacht... Ich warte auf die Antwort.

Vielen Dank an die Teilnehmer.

 
TheXpert #:
Ja. Der Bereich der Schaltfläche auf dem Bild ist ein undurchsichtiger Bereich.