![]() |
PRGBTripleArray
Hallo.
Ich habe einige Beiträge über Pixeloptimierung und Farben gelesen und als VCL Code auch problemlos umsetzen können. Nun ist meine Aufgabe, dies in einer FMX Umgebung zu programmieren und da fehlen mir schlicht Beispiele und Erfahrung. wie kann man zum Beispiel aus einem Image das in ein Bitmap umgewandelt wurde die einzelnen Farben auslesen und manipulieren? Bin um jede Hilfe dankbar. Liebe Grüsse Holger |
AW: PRGBTripleArray
Schau mal unter
![]() |
AW: PRGBTripleArray
Super, danke
|
AW: PRGBTripleArray
So, habe mir das mal angesehen mit den FMX.Surface und ein paar Funktionen ausprobiert, klappt auch. Was ich allerdings brauche sind die einzelnen Farbkanäle RGB um genau eine oder mehrere dieser Anteile zu ändern.
Holger |
AW: PRGBTripleArray
Was ist deine konkrete Frage?
Was hast du denn bisher an Quelltext und wo genau scheitert es denn? |
AW: PRGBTripleArray
Ich muss bei meiner Anwendung die Subpixel eines Pixels ansprechen, die in die drei Farben rot, grün und blau unterteilt sind. Ich muss dann pro Pixel eine oder zwei Farben transparent machen. Die Anwendung ist komplex und soll schlussendlich einen 3D Monitor mit Prismentechnik ansteuern, der ohne Brille ein echtes 3D Bild anzeigt.
|
AW: PRGBTripleArray
mit shader ist das Problem wohl lösbar
|
AW: PRGBTripleArray
Zitat:
Nenn mich einen Pedanten, aber ich finde gerade in der Informatik ist eine möglichst genaue Nomenklatur unverzichtbar. *) Nun kann es, abhängig von der physischen Realisierung des konkreten Monitors her, natürlich sein, dass die 3 Farben in einer Schlitzmaske nebeneinander pro Pixel angelegt sind, und eine Farbe somit gleichzeitig einen Subpixel der Breite 1/3 ausmacht. Aber das ist a) nicht immer der Fall (und bei LCD-Bildschirmen auch recht unüblich, da hier meist die 3 Farben übereinander liegen), und b) für ein Programm im Rahmen von Delphi zunächst völlig transparent, und bestenfalls eine implizite Interpretation der Farbwerte durch den konkreten Monitor, der damit nicht dem zu erwartenden Standard angehört. Daher nochmals: Was genau willst du erreichen, und was genau ist deine Ausgangssituation? |
AW: PRGBTripleArray
Ich denke das Problem ist nicht die Bezeichnung (Der Begriff Subpixel wird in der Anleitung des Monitors verwendet). Und es ist logisch, dass es sich hier nicht um einen normalen Monitor handelt, ich sagte ja das er mit Prismen also optischen Filtern arbeitet. Schlussendlich sollen getrennte Bilder für das Rechte und linke Auge simultan dargestellt werden. Zu diesem Zweck müssen bei einigen Pixeln entweder eine oder zwei Farbkanäle aus dem RGB verdeckt, entfernt oder transparent gemacht werden. Genau diese Farbe ist nämlich dann dem jeweils anderem Auge zugeteilt.
Ich hoffe diese Frage ist nun klarer. Liebe Grüsse Holger PS. Und danke an alle, die sich meines Problems überhaupt annehmen.. |
AW: PRGBTripleArray
So, habe das Problem gelöst.
farbe := ModifiedData.GetPixel(X,Y); txt1 := IntToHex(farbe,8); // Ausgangsfarbe txt2 := Copy(txt1,1,2); // Alpha txt3 := Copy(txt1,3,2); // ROT txt4 := Copy(txt1,5,2); // GRUEN txt5 := Copy(txt1,7,2); // BLAU Der Rest ist auch nicht schwer. txt6 := '$' + txt2 + txt3 + txt4 + '00'; // hier kann ich jede einzelne Farbe entfernen ModifiedData.SetPixel(X, Y,StringToColor(txt6)); Wenn es eine schnellere Variante gibt, wäre ich dafür aufgeschlossen. Liebe Grüsse Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz