Display - Steuerkreuz + Schwarzes Design. Möglich ?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ThomasProj.

    Display - Steuerkreuz + Schwarzes Design. Möglich ?

    Guten Tag.

    Ich möchte hier fragen wie man es schafft das der komplette Screen/Display "dunkler" wird, ein Steuerkreu erscheint das man ziehen kann, der gezogene Bereich dann größer wird.


    Ist in fast jedem Screenshot Tool vorhanden.
    Also man drückt nen Button, der Screen wird dunkler, man kann ziehen & der gewählte Bereich wird "hell".

    Ich möchte keinen C&P Code, nur einen Ansatz wie das möglich ist.

    Ich dachte an GDI.

    Wäre das so möglich ?
    Hallo ThomasProj

    stelle deine Form auf eine dunkle Hintergrundfarbe ein, gibt ihr zB ein opacity von 50% und maximiere die Form beim Start.
    Dann ist der Screen dunkler und dennoch durchscheinend. Dann ziehe mit der Maus unter Mousemove ein Rechteck und weise dem über Fillrectangle eine Farbe zu.(vorher Graphicsobjekt erstellen ). Bei der Farbe brauchst du einen Wert für Alpha.

    VB.NET-Quellcode

    1. Dim TransparentBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 0))
    2. Dim g As Graphics = Me.CreateGraphics
    3. g.FillRectangle(TransparentBrush,meinRectangle)


    Unter Mousedown legst du den Startpunkt fest und gibst einen Booleanwert aus, der bis zum Mouseup gilt (Endpunkt für dein Rechteck). Hier kannst du dann Bildererstellen und speichern aufrufen
    lg finni
    Und erneut .CreateGraphics. (@finni: )
    Bitte verwendet das nicht.

    Verwende e.Graphics im Paint-Event
    Mehr dazu hier : [VB 2008] [Tutorial] GDI+
    Desweiteren besteht noch die Möglichkeit, falls du auf Geschwindigkeit einen großen Wert legst, einen Screenshot vom Desktop machen und diesem mit Lockbits zu verdunkeln.
    [VB 2010] Tutorial: LockBits

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gather“ ()

    Screen dunkler machen geht entweder mit LockBits oder über ne ColorMatrix, das Rechteck ziehen wirst du sicher selber hinbekommen (MouseDown, MouseMove + MouseUp reichen).
    @ThomasProj:
    Ebenfalls hab ich noch nen alten Code von mir Gefunden, um ein Bitmap zu verdunkeln mit ColorMatrix:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Shared Function Brightness(ByVal b As Bitmap, ByVal sngAmount As Single) As Bitmap
    2. ' Brightness should be -1 (black) to 0 (neutral) to 1 (white)
    3. If sngAmount < -1 OrElse sngAmount > 1 Then
    4. Throw New ArgumentOutOfRangeException("sngAmount must be between -1 and 1.")
    5. End If
    6. Dim cm As New System.Drawing.Imaging.ColorMatrix(New Single()() _
    7. {New Single() {1, 0, 0, 0, 0}, _
    8. New Single() {0, 1, 0, 0, 0}, _
    9. New Single() {0, 0, 1, 0, 0}, _
    10. New Single() {0, 0, 0, 1, 0}, _
    11. New Single() {sngAmount, sngAmount, sngAmount, 0, 1}})
    12. Using ia As New System.Drawing.Imaging.ImageAttributes
    13. ia.SetColorMatrix(cm)
    14. Dim rc As New Rectangle(0, 0, b.Width, b.Height)
    15. Using bClone As Bitmap = DirectCast(b.Clone, Bitmap)
    16. Using g As Graphics = Graphics.FromImage(b)
    17. g.Clear(Color.Transparent)
    18. g.DrawImage(bClone, rc, 0, 0, bClone.Width, bClone.Height, GraphicsUnit.Pixel, ia)
    19. End Using
    20. End Using
    21. End Using
    22. Return b
    23. End Function


    Und ich denke einmal, du weißt wie man einen Screenshot macht.
    Wenn nicht verwende einfach: g.CopyFromScreen(New Point(0, 0), New Point(0, 0), screenSize)