Francesco Geri

Il blog di Francesco Geri
posts - 87, comments - 342, trackbacks - 2

My Links

News



Anch'io metto nel mio blog cose che scrivo così, tanto per fare, tanto per condividere miei appunti, senza prendermi la briga di garantirne l'infallibilità, né l'assoluta correttezza, senza pretese e con grande umilté.

Quanti mi hanno visto dal 25/10/2007:
...dettagli

Quanta gente che c'è in questo blog!!

site statistics

Archives

Post Categories

Altre

Blogs

Come verificare se un punto è visibile nello schermo

Il post mostra un semplice tip per vedere se un punto è visibile nello schermo (anche in presenza di più schermi).

La grafica dell'esempio è "mozzafiato":

image

 

Il codice è invece il seguente:

   1: Public Class Form1
   2:  
   3:     Private Sub Button1_Click(ByVal sender As System.Object, _
   4:                 ByVal e As System.EventArgs) Handles Button1.Click
   5:         Me.TxtEsito.Text = "..."
   6:         Dim p As Point
   7:         Try
   8:             Me.Cursor = Cursors.WaitCursor
   9:             Threading.Thread.Sleep(120)
  10:             p = New Point(Me.TxtX.Text, Me.TxtY.Text)
  11:             Dim s As Screen = Screen.FromPoint(p)
  12:             If s Is Nothing Then
  13:                 Me.TxtEsito.Text = "non nello schermo"
  14:             Else
  15:                 Me.TxtEsito.Text = "Schermo '" & s.DeviceName & "'"
  16:                 ' Verifica se il punto è contenuto
  17:                 If s.WorkingArea.Contains(p) Then
  18:                     Me.TxtEsito.Text &= ": il punto è contenuto!"
  19:                 Else
  20:                     Me.TxtEsito.Text &= ": il punto NON è contenuto!"
  21:                 End If
  22:             End If
  23:         Catch ex As Exception
  24:             Me.TxtEsito.Text = ex.Message
  25:         Finally
  26:             Me.Cursor = Cursors.Default
  27:         End Try
  28:     End Sub
  29:  
  30:  
  31: End Class

 

In pratica è sufficiente determinare lo schermo che "dovrebbe" mostrare il punto che ci interessa:

Dim s As Screen = Screen.FromPoint(p)

Ho scritto "dovrebbe" in quanto, se nessuno schermo contiene quel punto allora il metodo restituisce lo schermo più "vicino" al punto.

A questo punto, per essere sicuri che il punto sia contenuto nell'area visibile dello schermo, basta eseguire la seguente chiamata:

If s.WorkingArea.Contains(p) Then

Print | posted on giovedì 4 dicembre 2008 1.23 | Filed Under [ Tips .Net ]

Powered by: