Ich habe einen kleinen Bildschirmschoner entwickelt, der Direct2D verwendet. Dabei werden regelmäßig Farbpunkte auf den Bildschirm gezeichnet. Durch die Änderung der Position dieser Punkte ergeben sich Linien.
Darüber hinaus verdunkle ich in jedem Frame den aktuellen Bildschirminhalt, sodass ältere Farbpunkte bei jeden Frame dunkler werden, sodass es aussieht, dass die Linien dunkler werde und schließlich ganz verschwinden, und zwar so:
static D2D_COLOR_F clear_color = {0.0f, 0.0f, 0.0f, 0.1f};
pBlackBrush->SetColor(clear_color);
pRT->FillRectangle(D2D1::RectF(0.0f, 0.0f, width, height), pBlackBrush);
Und hier habe ich ein kleines Problem.
Für bereits sehr dunkle Farben auf dem Bildschirm reicht scheinbar der alpha-Wert in clear_color nicht aus, um komplettes Schwarz zu erzeugen, sodass man auf dem Bildschirm bleibende Streifen sieht, d.h. sehr dunkle Farben werden NICHT bis zu schwarz
abgedunkelt, sondern bleiben erhalten.
Welche Möglichkeiten habe ich nun, den Bildschirminhalt so zu manipulieren, dass nur sehr dunkle Farben auf Schwarz gesetzt werden, um diese Streifen zu eliminieren? Alle Farben über einem bestimmten Helligkeitswert sollen dabei nicht verändert
werden.
Für Tipps wäre ich dankbar!