none
Bildschirm Farbinversion RRS feed

  • Frage

  • Also gibt es eine Möglichkeit, mit vb den gesammten bildschirm ins Negativ zu stellen? Also entweder ist er im Negativ oder nicht, denn bei folgendem Code, wird einfach der gesammte Bildschirm umgekehrt(farbe):

    Public Class Form1
      Private Declare Function InvertRect Lib "user32" (ByVal hdc As Integer, ByRef lpRect As Rect) As Integer
      Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Integer) As Integer
      Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Integer, ByRef lpRect As Rect) As Integer
      Private Declare Function GetDesktopWindow Lib "user32" () As Integer
    
      Private Structure Rect
        Dim Left As Integer
        Dim Top As Integer
        Dim Right As Integer
        Dim Bottom As Integer
      End Structure
    
      Private rct As Rect
    
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        GetClientRect(GetDesktopWindow, rct)
        InvertRect(GetWindowDC(GetDesktopWindow), rct)
      End Sub
    End Class
    
    Code von folgender Adrese: http://social.msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/81cdb9a7-4562-4978-8ed8-8082d7fde7ca


    LG Yves Riedener
    Samstag, 2. Oktober 2010 10:41

Alle Antworten

  • Hallo Yves,

    Ja, wie der Code von Robert veranschaulicht wird hier schwarz, was weiß war ....
    Ob das in jedem Fall die Komplementärfarben sind, kann ich nicht sagen, aber es erfüllte damals meine Anforderungen an das Programm.
    Die Zielsetzung war die, dass nicht nur das aktive Fenster sondern der komplette Bildschirminhalt verändert wird.

    Aber wo befindet sich in deinem Beitrag nun die eigentliche Frage?

    Also gibt es eine Möglichkeit, mit vb den gesammten bildschirm ins Negativ zu stellen?

    Ja. Das Einfachste wird sein, du probierst es mal aus. Das ist mit Roberts Code sehr einfach und bringt auch einen tollen Effekt. Ich brauchte das damals für eine Anwendung für einen Menschen mit Sehbehinderung der sehr blendempfindlich ist und das Internet nutzt. Da ist jede Seite anders gestaltet und es macht daher keinen Sinn, in der Systemeinstellung mit den Farbprofilen zu arbeiten wenn nach dem Klick auf den nächsten Link ohnehin alles wieder völlig anders ist.

    Es ist daher ein super Code der allerdings noch den kleinen Schönheitsfehler hat, dass ein Control seine Ursprungsfarbe wieder einnimmt, wenn es aktualisiert wird.

     

     


    Liebe Grüße Stefan Cheers Stefan ------------------------------------------------ Ich verwende Visual Basic 2008 Express I'm using Visual Basic 2008 Express
    Samstag, 2. Oktober 2010 13:25
  • Ja, aber wenn ein Steuerelement während dem Negativ angewählt wird, wird das wieder in original angezeit, dann hat man halb original halb negativ und das sieht echt doof aus! Nun meine frage lautet, wie kann ich den Bildschirm ins negativ stellen, ohne dass er sich an einigen stellen zurück setzt.


    LG Yves Riedener
    Samstag, 2. Oktober 2010 21:17
  • Hallo Yves,

    genau das habe ich seinerzeit nicht weiter untersucht. Das Problem ist wohl, dass sich die Eigenschaft eines Controls z.B. beim MouseHover oder auch TabSelct etc. ändert und so jede Menge Controls ihre Paint-Eigenschaft verändern. Hier brauchst du sicher Hilfe eines Profis, der ich nun mal nicht bin. Theoretisch müsste ja immer nur das Control, das sich ändert wieder zurück gesetzt weden. Die Theorie nutzt uns aber nichts, wenn wir nicht wissen, wie man das in die Tat umseten kann.

    Eine andere Idee wäre die, der zweite Weg, den Robert im Link beschrieben hat.

    Shift + Alt + Prnt Scrn ist eine Tastenkombination mit der man in die besagten Kontrasteinstellungen kommt. Mit der KeysSendKey-Methode kannst du das aufrufen. Das dumme hierbei ist eben, dass du damit nicht direkt die Einstllung veränderts, sondern in einem Dialog landest.

     


    Liebe Grüße Stefan Cheers Stefan ------------------------------------------------ Ich verwende Visual Basic 2008 Express I'm using Visual Basic 2008 Express
    Sonntag, 3. Oktober 2010 17:48
  • Ich könnte es mit Bildschirmlupe von Windows machen, aber da stellen sich folgende Fragen:

    Wie kann ich die Bildschirmlupe öffnen und die Einstellungen verändern und wie kann ich das Fenster dann verstecken und kann ich es automatisch schlissen wenn ich meine Anwendung geschlossen wird


    LG Yves Riedener
    Dienstag, 5. Oktober 2010 17:38
  • Hallo Yves,

    das hört sich nach einer Abfolge von KeysSendKey an. Welche Tastenkombinationen im einzelnen erforderlich sind, kann ich dir allerdings nicht sagen.


    Liebe Grüße Stefan Cheers Stefan ------------------------------------------------ Ich verwende Visual Basic 2008 Express I'm using Visual Basic 2008 Express
    Dienstag, 5. Oktober 2010 21:09