Opacitiy Effekt gesucht?
-
Ich hab da mal was gemacht. Hier die Funktion:
VOID DarkenScreen() { HBITMAP hBrushBmp; HDC hMemDC; HDC hdc; HBRUSH hBrush, hOrgBrush; int i, k, offset, width, height; // Vorbereitungen width = Screen->Width; height = Screen->Height; hdc = GetWindowDC(GetDesktopWindow()); hMemDC = CreateCompatibleDC(hdc); hBrushBmp = CreateCompatibleBitmap(hdc, 8, 8); SelectObject(hMemDC, hBrushBmp); // Das Brush-Bitmap erstellen im DC offset = 0; for(i=0; i<8; i=i+1) { for(k=0; k<8; k=k+1) if( ( (k + offset) % 2 ) == 0 ) SetPixel(hMemDC, k, i, RGB(0,0,0)); else SetPixel(hMemDC, k, i, RGB(255,255,255)); offset = offset + 1; } // Den Brush erstellen und ins Screen-DC hauen hBrush = CreatePatternBrush(hBrushBmp); hOrgBrush = (HBRUSH)SelectObject(hdc, hBrush); // Den Bildschirm verdunkeln PatBlt(hdc, 0, 0, width, height, 0xA000C9); // Aufräumen SelectObject(hdc, hOrgBrush); DeleteObject(hBrush); DeleteObject(hBrushBmp); ReleaseDC(NULL, hMemDC); ReleaseDC(GetDesktopWindow(), hdc); }
-
Goile Sache !!
Und wie kann ich den Bildschirm wieder auf die ursprünglichen Werte setzen ?
-
Na, wie wohl:
InvalidateRect(NULL, NULL, TRUE);
-
Stimmt !! Das ich da nicht selbst drauf gekommen bin !!

-
Ja...
-
Soo... nach langem Grübeln und Testen ist mir die Eigenschaft Alphablending aufgefallen.
Ich lasse jetzt einfach vor dem Passwortfenster ein hellblaues leeres Fenster mit AlphaBlending = 200 im Vollbildmodusthis->Height = Screen->Height; this->Width = Screen->Width;aufgehen (nicht nodal!!).
Das Passwortfenster liegt dann modal darüber. Ein Schreenshot findet ihr hierFunktioniert aber nur im XP-Style

-
Gut... Wenn du so viel Rechenleistung verpowern willst...
EDIT: Und nebenbei hättest du dich wenigstens mal für meine Bemühungen bedanken können. Ich such das extra für dich raus, teste es nochmal und von dir kommt dahingehend nicht mal irgendeine Reaktion.
-
Bitte Entschuldige.
Tut mir leid... kommt ned nochmal vor.Danke für Eure Beiträge!
Die Rechenleistung spielt eigentlich keine Rolle. Das Fenster geht wieder zu bevor irgendetwas auf die Passworteingabe reagiert.
-
Das AlphaBlending allein verbraucht richtig viel Power.
-
Einen ähnlichen Effekt bekommst du übrigens mit folgender Funktion:
VOID DarkenScreenVCL() { TCanvas* ScreenCanvas; Graphics::TBitmap* bmp; int i,k, offset; ScreenCanvas = new TCanvas; ScreenCanvas->Handle = GetWindowDC( GetDesktopWindow() ); bmp = new Graphics::TBitmap; bmp->Width = 8; bmp->Height = 8; bmp->PixelFormat = pf32bit; //bmp->Monochrome = true; offset = 0; for(i=0; i<8; ++i) { for(k=0; k<8; ++k) if( ( (k + offset) % 2 ) == 0 ) bmp->Canvas->Pixels[k][i] = clBlue; else bmp->Canvas->Pixels[k][i] = clWhite; offset++; } ScreenCanvas->Brush->Color = clGray; ScreenCanvas->Brush->Bitmap = bmp; PatBlt(ScreenCanvas->Handle, 0, 0, Screen->Width, Screen->Height, 0xA000C9); delete bmp; ReleaseDC(NULL, ScreenCanvas->Handle); ScreenCanvas->Handle = NULL; delete ScreenCanvas; }