Es ist einfach Farbe umzukehren aus RGB Werten, bzw. der COLORREF mit der Funktion InvertColor(COLORREF color)!
Die Kommentare erklären, was die Makros GetRValue, GetGValue und GetBValue tun, und beschreiben den Zweck der InvertColor-Funktion. Diese Funktion extrahiert die Farbkomponenten, invertiert sie und erstellt dann eine neue COLORREF-Struktur mit den invertierten Werten.
#ifndef GetRValue#define GetRValue(rgb) ((BYTE)(rgb))#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))#define GetBValue(rgb) ((BYTE)((rgb)>>16))#endif// Diese Makros dienen dazu, die Rot-, Grün- und Blaukomponenten aus einer COLORREF-Struktur zu extrahieren.// Sie werden definiert, wenn sie zuvor nicht definiert wurden.COLORREFInvertColor(COLORREFcolor){// Extrahiert die Rot-, Grün- und Blaukomponenten der Farbe.longred=255-GetRValue(color);longgreen=255-GetGValue(color);longblue=255-GetBValue(color);// Erstellt eine neue COLORREF-Struktur mit den invertierten Farbwerten und gibt sie zurück.returnRGB(red,green,blue);}
Das Makro GetRValue, GetGValue und GetBValue wird verwendet, um die Rot-, Grün- und Blaukomponenten aus der COLORREF-Struktur zu extrahieren. Anschließend wird die Funktion InvertColor verwendet, um diese Farbwerte umzukehren und eine neue COLORREF-Struktur zurückzugeben, die die invertierten Farbwerte enthält.
Hier ist, wie Ihr Code funktioniert:
GetRValue(rgb): Extrahiert die Rotkomponente der Farbe rgb und gibt sie zurück.
GetGValue(rgb): Extrahiert die Grünkomponente der Farbe rgb und gibt sie zurück.
GetBValue(rgb): Extrahiert die Blaukomponente der Farbe rgb und gibt sie zurück.
Die Funktion InvertColor invertiert die Farbwerte, indem sie 255 (das Maximum) von den extrahierten Farbwerten subtrahiert und dann eine neue COLORREF-Struktur erstellt, die die invertierten Farbwerte enthält.
Wenn Sie beispielsweise die Farbe (255, 0, 0) (reines Rot) an InvertColor übergeben, gibt sie die Farbe (0, 255, 255) (Cyan) zurück, da Rot zu Cyan invertiert wird. Dieser Code ist hilfreich, wenn Sie Farben invertieren möchten, z.B., um den Negativ-Effekt auf Bilder anzuwenden.
Der Unterschied _ttof, atof, _atof_l, _wtof, _wtof_l in C++ und C ist, dass diese verschiedene Eingaben haben, aber die Ausgabe immer eine Gleitkommazahl
Es ist einfach im MS Visual Studio Registerkarten zu deaktivieren oder wieder zu aktivieren Gerade im MS Visual Studio 2008 kommt es durch die Tabs / Registerkarten
Der wesentliche Unterschied zwischen time und clock in CPP und C ist das was gezählt wird Bei time sind es Sekunden ab 1.1.1970 und bei clock Millisekunden
Eine der aufwendigsten Aufgaben bei 3D Programierung in C++ C sind Schatten in OpenGL und DirectX Schatten Shadow werden oft bei der Entwicklung mit Schattierung
Bei Angabe einer expliziten RGB-Farbe hat der COLORREF-Wert die folgende hexadezimale Form: 0x00bbggrr Das Byte niedriger Ordnung enthält einen Wert für die relative Intensität von Rot. Das zweite Byte enthält einen Wert für Grün. und das dritte Byte enthält einen Wert für Blau. Das Byte höherer Ordnung muss Null sein. Der Maximalwert für ein einzelnes Byte ist 0xFF. Verwenden Sie das RGB-Makro, um einen COLORREF-Farbwert zu erstellen. Verwenden Sie die Makros GetRValue, GetGValue und GetBValue, um die einzelnen Werte für die roten, grünen und blauen Komponenten eines Farbwerts zu extrahieren. Ich wieder. Ich kann mir viele Möglichkeiten vorstellen, diese Daten zu manipulieren, um eine einzige Farbe des Ganzen zu invertieren. Am schnellsten wäre die Bitmanipulation mit Masken usw.?
Wie kann ich ein einzelnes Pixel invertieren? Gibt es eine Gerätekontextfunktion oder muss ich die Pixelfarbe abrufen, invertieren und dann das Pixel erneut einstellen?
Am einfachsten wäre es, die Pixelinformationen abzurufen und dann zu invertieren. Dazu würden Sie GetPixel und SetPixel verwenden. Sie können auch GetDIBBits verwenden, um einen Puffer mit den Bitmap-Pixelinformationen abzurufen, alles zu ändern, was Sie möchten, und dann SetDIBBits verwenden, um die Informationen auf die Bitmap zurückzusetzen.?
In Ordnung. Da ich jedes Mal ein einzelnes Pixel und keine Bitmap habe, verwende ich GetPixel und SetPixel. Jetzt gibt GetPixel einen COLORREF-Wert zurück und SetPixel nimmt einen an. Wie invertiere ich einen COLORREF-Wert? Bitoperation (~)? Ich weiß nicht, ob das funktioniert, da nicht alle Bits des COLORREF zum Speichern eines RGB-Werts verwendet werden.?
Ich weiß, dass dies eine Farbe nicht direkt invertiert, sondern nur "entgegensetzt". Ich habe mich gefragt, ob jemand eine einfache Möglichkeit (ein paar Codezeilen) kennt, eine Farbe von einer bestimmten Farbe umzukehren. Im Moment habe ich dies (was nicht genau die Definition eines Inverters ist, denn wenn ich ihm eine grau / graue Farbe übergebe, wird etwas sehr Ähnliches zurückgegeben?
So konvertieren Sie COLORREF in Hex-CString und zurück in COLORREF C ++ Visual?
Diese Webseite speichert keine personenbezogenen Daten. Allerdings werden Drittanbieter verwendet, um Werbung zu schalten. Diese wird von Google verwaltet und entspricht dem IAB Transparency and Consent Framework (IAB-TCF). Die CMP-ID lautet 300 und kann am Seitenende individuell angepasst werden. mehr Infos & Datenschutz ....