vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Einfache Bildschirmlupe 
Autor: Manfred X
Datum: 31.01.23 09:00

Hallo!

Ein Bereich um die aktuelle Mausposition wird in eine
verschiebbare und größenänderbare Picturebox auf einer Form kopiert
und dabei um einen Faktor vergrößert.


Public Class frmLupe
 
    Dim fc As Double = 4
 
    Dim pb As New PictureBox With {.Parent = Me, .Dock = DockStyle.Fill,
        .BackColor = Color.White, .SizeMode = PictureBoxSizeMode.Zoom}
    Dim bmp As Bitmap
    Dim WithEvents timCopy As New Timer With {.Interval = 500, .Enabled = True}
 
    Private Sub timCopy_Tick(sender As Object, e As EventArgs) Handles _
      timCopy.Tick
 
        'Aktuelle Größe der Lupe
        Dim w As Integer = pb.Width
        Dim h As Integer = pb.Height
 
        'Größe des darstellbaren Bildschirmabschnitts
        Dim sw As Integer = w / fc
        Dim sh As Integer = h / fc
 
        'Position des Bildschirmabschnitts gemäß Mausposition 
        Dim mt As Integer = Me.MousePosition.Y
        Dim ml As Integer = Me.MousePosition.X
        mt = Math.Max(0, mt - sh \ 2)
        ml = Math.Max(0, ml - sw \ 2)
 
        If bmp IsNot Nothing Then
            bmp.Dispose()
            bmp = Nothing
        End If
 
        bmp = New Bitmap(sw, sh)
        Using g As Graphics = Graphics.FromImage(bmp)
            'Kopieren des Bildschirmabschnitts in die Bitmap
            g.CopyFromScreen(New Point(ml, mt), New Point(0, 0), New _
              Drawing.Size(sw, sh))
            'Anzeigen
            pb.Image = bmp
        End Using
 
    End Sub
End Class
Man kann eine derartige Funktion auch in eine Anwendung integrieren und z.B. beim Aktivieren eines
Eingabecontrols oder einer Combobox eine Kennung setzen, durch die der Lupen-Timer (im Tick) angewiesen wird,
nicht die Mausposition, sondern die Cursorposition als Zentrum des vergrößerten Ausschnitts zu nutzen.
Beim Wechsel des Fokus wird dann wieder auf die Maus geschaltet.
Formularglobale boolsche Variable (Property): UseMousePosition

Beitrag wurde zuletzt am 31.01.23 um 09:16:31 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tooltips in Symbolleisten Schriftgrösse ändern und Frage zu ...400Dideldum30.01.23 00:31
Re: Tooltips in Symbolleisten Schriftgrösse ändern und Frage...169Manfred X30.01.23 08:26
Re: Tooltips in Symbolleisten Schriftgrösse ändern und Frage...148Dideldum30.01.23 15:25
Re: Tooltips in Symbolleisten Schriftgrösse ändern und Frage...165Manfred X30.01.23 21:14
Re: Tooltips in Symbolleisten Schriftgrösse ändern und Frage...165Dideldum30.01.23 21:32
Einfache Bildschirmlupe129Manfred X31.01.23 09:00
Re: Einfache Bildschirmlupe103Dideldum31.01.23 15:27
Bildschirmlupe folgt auch RichText-Caret124Manfred X01.02.23 09:24
Re: Bildschirmlupe folgt auch Datagridview-Zellen114Manfred X01.02.23 10:32
Re: Bildschirmlupe folgt auch Textbox-Caret111Manfred X01.02.23 11:22
Re: Tooltips in Symbolleisten Schriftgrösse ändern und Frage...195Dideldum01.02.23 19:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel