Diskussion zum Artikel "Die Betrachtung der CCanvas-Klasse. Wie man transparente Objekte zeichnet" - Seite 7

 
Nikolai Semko:

Hier wird der Algorithmus zum Mischen anderer transparenter Farben angewendet:


Wo ist die Transparenz? Die Schatten?

 
Dmitry Fedoseev:

Und wo bleibt die Transparenz? Der Schatten?

Der Schatten und der Rand des geglätteten Kreises.
Schließlich hat das Pixel am Rand der Glättung die gleiche Farbe, aber eine andere Transparenz.
 

Nicholas, ich bin gerade nicht in der Stimmung für Blumen. Wenn es einen Fehler in der Formel gibt, danke für den Hinweis. Ich habe sie nicht weiter überprüft - ich habe sie implementiert und es vergessen.

Es wäre gut, wenn Sie Ihr Wissen und Ihre Errungenschaften auf dem Gebiet des Kanvas in etwas Nützliches umsetzen würden. Denken Sie darüber nach.

 
Реter Konow:

Nicholas, ich bin gerade nicht in der Stimmung für Blumen. Wenn es einen Fehler in der Formel gibt, danke für den Hinweis. Ich habe es nicht oft überprüft - ich habe es implementiert und vergessen.

Es wäre gut, wenn Sie Ihr Wissen und Ihre Errungenschaften im Bereich Kanvas für etwas Nützliches einsetzen würden. Überlegen Sie es sich.

Danke für die Anregung, denn dieser Gedanke kam mir gar nicht in den Sinn :)))
Nun, im Ernst, ich bin sehr überrascht von Ihren Worten. Nutzlose Beispiele sind nur eine Demonstration von Möglichkeiten. Ein erfahrenes Auge wird immer viel Nützliches in scheinbar nutzlosen Dingen sehen. Und wissen Sie nicht, dass das, worüber ich immer spreche, in sehr nützlichen Dingen sehr anwendbar ist. Und all das tue ich ausschließlich für die Verwirklichung von nützlichen Dingen. Ich spreche nur nicht darüber, bis ich fertig bin.

 
Nikolai Semko:

Danke für den Hinweis, denn dieser Gedanke ist mir noch nie gekommen :)))
Nun, im Ernst, ich bin sehr überrascht von dem, was Sie sagen. Nutzlose Beispiele sind nur eine Demonstration von Möglichkeiten. Ein erfahrenes Auge wird immer viel Nützliches in scheinbar nutzlosen Dingen sehen. Und Sie sollten wissen, dass das, worüber ich immer spreche, in sehr nützlichen Dingen sehr anwendbar ist. Und all das tue ich ausschließlich für die Verwirklichung von nützlichen Dingen. Ich spreche nur nicht darüber, bis ich fertig bin.

Ich habe nicht gesagt, dass Ihre Beispiele nutzlos sind. Ganz im Gegenteil. Die Frage ist nur, wann Sie sie auf das Nützliche anwenden werden. Das heißt, Sie kreieren eine Hülle dieser Nützlichkeit, die Sie noch nirgends gezeigt haben. Und was es ist und zu welchem Zweck - niemand weiß es. :))

 
Реter Konow:

Ich habe nicht gesagt, dass Ihre Beispiele nutzlos sind. Ganz im Gegenteil. Die Frage ist nur, wann Sie sie auf etwas Nützliches anwenden werden. Das heißt, Sie schaffen eine Hülle für etwas Nützliches, das noch nirgendwo gezeigt wurde. Und was es ist und zu welchem Zweck - niemand weiß es. :))

Bessere Überraschungen als vor dem Zug zu laufen.
 
Nikolai Semko:

nicht das ...

es geht um Alpha1 und Alpha2.

Es ist auch notwendig, nicht nur die neu entstehenden Mischfarben zu berechnen, sondern auch die neu entstehende Transparenz.

...

Es ist nur ein bisschen Mathematik auf dem Niveau der 7. Klasse der Sekundarschule. Man erhält ein langes Polynom und muss es reduzieren. Das Ergebnis sollte ein Trinom sein.

 
Nikolai Semko:
Bessere Überraschungen als vor dem Zug zu laufen.

Nikolai, jeder weiß bereits, dass Sie die Nummer eins auf Canvas sind. Ich streite mich nicht. Können Sie mir sagen, wenn Sie wissen, wie man wieder die Farbe und Alpha aus der endgültigen Farbe von ColorToARGB() erhalten? Ich habe die Farbe und den Alphawert gesendet, das Ergebnis erhalten und muss nun die ursprüngliche Farbe und den Alphawert aus dem Ergebnis erhalten.

Wie kann man das machen?

 
Реter Konow:

Nikolai, jeder weiß bereits, dass Sie der Erste auf der Leinwand sind. Ich streite mich nicht. Können Sie mir sagen, wenn Sie wissen, wie man wieder die Farbe und Alpha aus der endgültigen Farbe von ColorToARGB() erhalten? Senden Sie die Farbe und Alpha, erhalten Sie das Ergebnis, und dann müssen Sie die ursprüngliche Farbe und Alpha aus dem Ergebnis zu erhalten.

Wie macht man das?

Es ist mir ein Rätsel, warum R und B in ARGB aus RGB vertauscht werden. Aber es ist eine Tatsache.

Ganz einfach:

   color x=0x00112233;
   color y=ColorToARGB(x,0x44); 
   color z=ColorToARGB(y,0);
   uchar a=y>>24;

Wenn wir debuggen, haben wir:

z ist das ursprüngliche RGB

a- das ursprüngliche Alpha.

Man kann es auch über Union oder Byte Shifts machen, aber der Datensatz wird länger sein.

Wenn die Farbkomponenten bekannt sind, verwende ich überhaupt keinen Datensatz vom Typ ColorToARGB(clrRed,48), sondern die hexadezimale Form des Datensatzes 0x30FF0000 (das gleiche wie ColorToARGB(clrRed,48)). Sehr bequem, übersichtlich und schneller.

 
Dmitry Fedoseev:

Es ist nur ein bisschen Mathe aus der 7. Man erhält ein langes Polynom und muss es reduzieren. Das Ergebnis sollte ein Trinom sein.

Wenn du "Polynom" oder "Trinom" in Bilder googelst, bekommst du eine Menge lustiger Bilder :)))