Erstellen einer Grafikbibliothek von Grund auf - Seite 2

 
Алексей Барбашин:

Ich bin mir sicher, dass es sich nicht lohnt, alles von Grund auf neu zu machen.

Sehr kluge Leute haben viel Zeit und Wissen investiert, um die gleiche Standardbibliothek oder die Anatoli-Bibliothek zu erstellen.

Die Menschen haben Zeit und Wissen investiert, und es wäre dumm, es nicht zu nutzen.

Wir sollten einfach das aus unserer Sicht Beste von beiden nehmen und ein neues bauen.

Wir müssen aus den Fehlern der anderen lernen. Wir werden unsere eigenen machen.)

Nur FÜR!

 
Das endgültige Ziel der Bibliothek ist nicht klar.
Welche Nachteile anderer Bibliotheken sollte sie beheben oder ausbauen? Oder soll es ein grundlegend neues Instrument werden? Soll es etwas GUI-orientiertes oder benutzerorientiertes sein?
Meine iCanvas-Bibliothek war beispielsweise eine logische Fortsetzung der CCanvas-Bibliothek, um die Benutzerfreundlichkeit von Benutzergrafiken zu verbessern, den Code kürzer und intuitiver zu gestalten, die Geschwindigkeit durch Vermeidung asynchroner Funktionen zu erhöhen und die Verknüpfung mit einem Preis-Zeit-Koordinatensystem und nicht nur mit XU-Bildschirmkoordinaten herzustellen.
 
Nikolai Semko:
Das endgültige Ziel der Bibliothek ist nicht klar.

Und das ist ein allgemeines Problem bei allen Grafikbibliotheken, soweit ich sehen kann.

Alle Projekte, die im Forum angeboten werden, haben eines von zwei Problemen zu lösen: entweder das Einkommen des Nutzers zu erhöhen oder die Effizienz zu steigern, um das gleiche Einkommen zu erzielen.

Ich kann mich nicht erinnern, dass sich ein einziger Projektautor die Mühe gemacht hätte, Beispiele für die Lösung eines dieser Probleme zu zeigen.

Das auffälligste Beispiel, an das ich mich im "Canvas ist cool"-Thread erinnere, war die Präsentation von einfach hypnotisch schönen Grafiken... Aber wie es das Einkommen des Nutzers (zumindest des Autors) erhöht hat oder wie es die Effektivität des Erwerbs erhöht hat, habe ich nie verstanden.

Das Gleiche gilt für Anatolys Bibliothek. Tolle Struktur, gut durchdacht, aber... Ich bin sicher, dass nicht einmal der Autor selbst alle Funktionen dieser Bibliothek nutzt. Was die Nutzer betrifft, so denke ich, dass wir sie vergessen können.

Ein weiteres Beispiel ist das Projekt von Peter Konov. Für Leute, die OOP nicht verstehen können (wollen), ist es eine recht funktionierende Lösung mit guten Funktionen, aber... Auch hier gibt es kein einziges Beispiel für eine Steigerung der Effizienz bei der Erzielung von Einnahmen.


Meines Erachtens sind die meisten dieser Projekte eher notwendig, um die Einbildung ihrer Autoren zu fördern. Im Allgemeinen ist es eine notwendige Sache. Aber man sollte keine "Endziele" erwarten. Das ist so, als würde ich von meiner TS-Liga (die nur eine Ansammlung von allen möglichen einfachen Experten ist) erwarten, dass sie überwacht, profitiert, Gral... obwohl sie nur ein Indikator für verschiedene TS-Prinzipien ist, die auf verschiedene Symbole wirken.

 
Georgiy Merts:

Und das ist ein allgemeines Problem bei allen Grafikbibliotheken, soweit ich sehen kann.

Alle Projekte, die im Forum angeboten werden, haben eines von zwei Problemen zu lösen: entweder das Einkommen des Nutzers zu erhöhen oder die Effizienz zu steigern, um das gleiche Einkommen zu erzielen.

Ich kann mich nicht erinnern, dass zumindest ein Projektautor sich die Mühe gemacht hat, Beispiele zu zeigen, wie eine dieser Aufgaben zu lösen ist.

In der Tat ist dies ein Abschnitt des Programmiererforums ..... Sie sollten hier nicht nach finanziellem Sinn suchen))) Ich selbst ziehe es vor, diese Fragen unabhängig von diesem Forum zu lösen.

Nikolai Semko:
Das endgültige Ziel der Bibliothek ist nicht klar.
Welche Nachteile anderer Bibliotheken soll sie beheben oder Möglichkeiten erweitern? Oder soll es ein grundlegend neues Instrument werden? Soll es etwas GUI-orientiertes oder benutzerorientiertes sein?
Zum Beispiel war meine iCanvas-Bibliothek eine logische Fortsetzung der CCanvas-Bibliothek, um die Benutzerfreundlichkeit benutzerdefinierter Grafiken zu erhöhen, den Code kürzer und intuitiver zu gestalten, die Geschwindigkeit durch Vermeidung asynchroner Funktionen zu erhöhen und die Verknüpfung mit einem Preis-Zeit-Koordinatensystem und nicht nur mit XU-Bildschirmkoordinaten herzustellen.

Ich habe mit Ihrer Bibliothek begonnen, dank Ihnen, dann habe ich es ein wenig verfeinert, dann einige mehr)))) schließlich alles geändert, einschließlich neu geschriebenen Funktionen von Linien, auch breite Linie Funktion von Quelle Leinwand, entfernt gefälschte Funktionen, setzen Stub auf Ereignis. Ich habe immer noch nicht vollständig aufgegeben Struktur W obwohl es wenig links auch dort. Ich habe die Berechnung der Balken auf der linken und rechten Seite durch binäre Suche unter anderen Elementen und auch hinzugefügt binäre Suche selbst mit der Fähigkeit, größer oder kleiner Wert wählen. Auch hinzugefügt Fähigkeit, von Arrays jeglicher Art (Zeitreihen/gemeinsam) zu bauen Und kam zu dem Schluss, dass es notwendig ist, die construct)))))) ändern

 

Hier schließt sich der Kreis.

Ich verstehe die Hierarchie.

Ich muss noch einmal auf die Kontrolle zurückkommen, aber es gibt noch einige Koordinaten, die ich separat eingeben möchte. Ich würde sie gerne in einen Kreis stellen. Ich denke, die Kotrol wird von den Koordinaten gehen, so wird es wahrer und stark vereinfachen das System. Es kann natürlich sein, dass ich mit meinen Argumenten falsch liege - aber bis jetzt scheint es eine naive Lösung zu sein.

Und kotrol - das ist nichts anderes als ein grundlegendes Element von Stilen - das theoretisch nach den Koordinaten stehen sollte.

Logik - wir können ein Element ohne Stile haben, aber nicht ohne Koordinaten

 
Alexandr Andreev:

Dies ist eigentlich ein Bereich des Programmiererforums ..... Sie sollten hier nicht nach finanziellem Sinn suchen))) Ich selbst ziehe es vor, diese Fragen getrennt von diesem Forum zu behandeln.

Sehr lustig.

In einem anderen Thread wird heftig darüber gestritten, dass "niemand umsonst arbeiten wird" - Sie sagen, "es lohnt sich nicht, nach dem finanziellen Sinn zu suchen" ???

 
Georgiy Merts:

Sehr lustig.

Neben dem Thema, bei dem es hitzige Kämpfe gibt, dass "niemand umsonst arbeiten wird" - sagen Sie "suchen Sie nicht nach finanziellem Sinn"?

Ich erhebe nicht einmal Anspruch auf die Urheberschaft der Bibliothek, die ich erhalten habe.... Ganz zu schweigen von seiner finanziellen Komponente.

Ich wollte nur wissen, wie es richtig gemacht werden sollte.

Wenn ein geringer Bedarf besteht, können Sie den Code sogar auf dem Schrottplatz sammeln.

Obwohl ich idealerweise eine Miniversion dieser korrekten Version machen möchte. Für minimalen Code und maximalen Nutzen.

 
Nikolai Semko:
Das endgültige Ziel der Bibliothek ist nicht klar .
Welche Unzulänglichkeiten anderer Bibliotheken sollte sie beheben oder erweitern? Oder soll es ein grundlegend neues Instrument werden? Soll es etwas GUI-orientiertes oder benutzerorientiertes sein?
Meine iCanvas-Bibliothek war beispielsweise eine logische Fortsetzung der CCanvas-Bibliothek, um die Benutzerfreundlichkeit benutzerdefinierter Grafiken zu verbessern, den Code kürzer und intuitiver zu gestalten, die Geschwindigkeit durch Vermeidung asynchroner Funktionen zu erhöhen und eine Verbindung zu einem Preis-Zeit-Koordinatensystem und nicht nur zu XU-Bildschirmkoordinaten herzustellen.

Nikolai, willkommen.

Letztlich geht es darum, die Unzulänglichkeiten der bereits vorhandenen Instrumente zu beheben.

Ich nehme an, dass es höchstwahrscheinlich eine Fortsetzung der Entwicklung der Standardbibliothek sein wird, um die Leichtigkeit der Verbindung mit den Projekten zu verbessern und die grafische Komponente zu verbessern, indem die Diagrammobjekte verlassen und zur Leinwand umziehen.

Aber im Großen und Ganzen sollten wir nicht darüber spekulieren, wie das Ergebnis aussehen wird.

 
Алексей Барбашин:

Nikolai, willkommen.

Letztlich geht es darum, die Unzulänglichkeiten der bereits vorhandenen Instrumente zu beheben.

Ich nehme an, dass es sich höchstwahrscheinlich um eine Fortsetzung der Entwicklung der Standardbibliothek handeln wird, um die Einfachheit der Verbindung mit den Projekten zu verbessern und die grafische Komponente zu verbessern, indem die Diagrammobjekte und der Übergang zur Leinwand verlassen werden.

Aber im Allgemeinen sollten wir nicht darüber rätseln, was passieren wird.

Kurz zum Thema Technik:

Wenn Sie den Drang verspüren, ein "A" durch eine Neugestaltung zu verbessern, sollten Sie die kritischen Schwachstellen angeben. Führen Sie sie einfach auf und erklären Sie, warum es unmöglich ist, sie im Laufe der evolutionären Entwicklung von A zu eliminieren.

Andererseits verbietet es aber auch niemand. Wenn Sie gerne Code schreiben, schreiben Sie ihn... Du schreibst "A" um, aber auf deine eigene Art und Weise, aber es wird neu sein

 
Alexandr Andreev:

Hier schließt sich der Kreis.

Ich verstehe die Hierarchie.

Ich muss das Steuerelement noch einmal erstellen, aber es gibt noch einige Koordinaten, die ich separat angeben möchte. Ich würde sie gerne in einen Kreis stellen. Ich denke, die Kotrol wird von den Koordinaten gehen, so wird es wahrer und stark vereinfachen das System. Es kann natürlich sein, dass ich mit meinen Argumenten falsch liege - aber bis jetzt scheint es eine naive Lösung zu sein.

Und kotrol - das ist nichts anderes als ein grundlegendes Element von Stilen - das theoretisch nach den Koordinaten stehen sollte.

Logik - wir können ein Element ohne Stile haben, aber nicht ohne Koordinaten.

Darüber braucht man nicht zu streiten, es ist wahr ))))

Stile, Themen - all das kann man später einbauen, wenn man eine solche Ergänzung zunächst ins Auge fasst. Eigentlich sollte dies alles in einem Basis-Steuerelement geschehen, und daher wird der Zuwachs an Funktionalität auch in diese Klasse gehen.

Bei den Koordinaten sehe ich zwei Arten - absolute Koordinaten, die relativ zum Diagramm berechnet werden, und lokale Koordinaten, die relativ zum übergeordneten Element berechnet werden.

Wird beispielsweise ein Formular gerendert, so wird seine Platzierung in einem Diagramm mit absoluten Koordinaten gehandhabt. Wird eine Schaltfläche in einem Formular platziert, so muss sie relativ zu dem Container positioniert werden, in dem sie platziert ist, d. h. relativ zu dem Formular.

Wenn Mausbewegungsereignisse empfangen werden, erhalten wir die absoluten Koordinaten des Cursorpunkts relativ zum Diagramm im Handler. Bei der Überprüfung, ob der Cursor das Formular oder eines der Elemente trifft, muss die absolute Koordinate des Cursors mit der aktuellen Position des Elements verglichen werden, wobei dessen Positionierung berücksichtigt wird. Das heißt, für ein Formular ist es einfach ein Vergleich mit den aktuellen Koordinaten und der Größe, aber für eine Schaltfläche ist es die Berechnung der absoluten Position der Schaltfläche im Koordinatensystem. Das heißt, die X-Koordinate für den Vergleich wird wie folgt berechnet X = (Parent==null)?X():(X()+Parent.X()), wobei X() eine Klassenfunktion ist, die die X-Position des Elements zurückgibt. Die Prüfung auf das Vorhandensein des Elternteils selbst kann jedoch in dieser Funktion selbst durchgeführt werden. Wenn ein Element ein übergeordnetes Element hat, wird die Koordinate als Addition der Koordinate des übergeordneten Elements zu seiner eigenen Koordinate im übergeordneten Element zurückgegeben. Die Anzahl der verschachtelten Elemente kann nämlich beliebig sein, und jedes von ihnen wird relativ zu dem Element positioniert, auf dem es sich befindet, und nicht relativ zum Graphen, so dass die absolute Koordinate rekursiv berechnet werden kann.

Grund der Beschwerde: