vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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
Bildschirmlupe folgt auch RichText-Caret 
Autor: Manfred X
Datum: 01.02.23 09:24

Hallo!

Bei Einbau in eine Anwendung folgt die Lupe alternativ dem Cursor einer
fokussierten Richtextbox, wenn eine Referenz auf "RTBtoShow" zugewiesen ist.
Nach Zuweisung von Nothing (bei Fokusverlust/Lostfocus-Event) wird wieder
der Mausposition gefolgt.
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}
 
    Public RTBtoShow As RichTextBox
 
 
    Private Sub timCopy_Tick(sender As Object, e As EventArgs) Handles _
      timCopy.Tick
 
        If RTBtoShow Is Nothing Then
            ShowScreen()
        Else
            ShowRichText()
        End If
    End Sub
 
 
    Private Sub ShowScreen()
 
        Dim sz As Size = GetAreaSize()
 
        Dim mt As Integer = Me.MousePosition.Y
        Dim ml As Integer = Me.MousePosition.X
 
        mt = Math.Max(0, mt - sz.Height \ 2)
        ml = Math.Max(0, ml - sz.Width \ 2)
 
        SetBitmap(New Point(ml, mt), sz)
    End Sub
 
 
    Private Function GetAreaSize() As Size
 
        Return New Size(pb.Width / fc, pb.Height / fc)
    End Function
 
 
    Private Sub SetBitmap(pos As Point, sz As Size)
 
        If Size.Height < 5 Then Return
 
        If bmp IsNot Nothing Then
            bmp.Dispose()
            bmp = Nothing
        End If
 
        bmp = New Bitmap(sz.Width, sz.Height)
        Using g As Graphics = Graphics.FromImage(bmp)
            g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
            g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
 
            g.CopyFromScreen(pos, New Point(0, 0), sz)
        End Using
        pb.Image = bmp
 
    End Sub
 
 
    Private Sub ShowRichText()
 
        Dim sz As Size = GetAreaSize()
 
        Dim sp As Point
        With RTBtoShow
            sp =
            .PointToScreen(.GetPositionFromCharIndex(.SelectionStart))
        End With
 
        Dim ct As Integer = Math.Max(0, sp.Y - sz.Height \ 2)
        Dim cl As Integer = Math.Max(0, sp.X - sz.Width \ 2)
 
        SetBitmap(New Point(cl, ct), sz)
 
    End Sub
 
End Class


Beitrag wurde zuletzt am 01.02.23 um 09:26:38 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-Caret125Manfred 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