Consultas, desarrollo de programas y petición de presupuestos:

jueves, 2 de octubre de 2014

Lupita: Magnificador de Pantalla en Gambas3


Lupita: Otro Magnificador de Pantalla pero programado en Gambas3

 Existen muchos "magnificadores de pantalla" (orca, magnifier o el zoom de compiz), este es otro programa que sirve para lo mismo...

Nos muestra un  formulario cuya imagen de  fondo es la zona del escritorio donde este el ratón, ampliando la imagen para que se vea mejor.

Lo mejor que tiene es que esta programado en Gambas3, y es fácilmente modificable/ampliable para otros menesteres....

Lo que hace el programa de modo continuo internamente es:
1)  lee las coordenadas de la posición del ratón (con el comando xdotool )
2)  captura un trozo rectangular del escritorio.
3)  lo muestra en el formulario "Lupa"
Y vuelve a repetir la operación cada pocos milisegundos, con lo cual hace que dé la impresión que lo hace "de continuo".

Además le he añadido, que lea la ruedecita del ratón, para aumentar o disminuir el zoom, asi ajustarlo fácilmente.

Tanto el código como los controles que usa, son muy pocos: un control timer,  un picturebox y un formulario.


El formulario "Lupa", es modificable con lo cual lo podemos redimensionar, por ejemplo para formar un rectángulo en la parte inferior de la pantalla y ver mejor la zona ampliada.


Captura de pantalla:



Código fuente:
Modulo de funciones:
-
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. ' Gambas module file
  2.  
  3. Public Function xmouse(cadena As String) As String
  4.  
  5.   Dim x As String[]
  6.  
  7.   x = Split(cadena, " ")
  8.   x[0] = Mid$(x[0], 3)
  9.   Return x[0]
  10.  
  11. End
  12.  
  13. Public Function ymouse(cadena As String) As String
  14.  
  15.   Dim x As String[]
  16.  
  17.   x = Split(cadena, " ")
  18.   x[1] = Mid$(x[1], 3)
  19.   Return x[1]
  20.  
  21. End
  22.  
  23. Public Function ejecutar_comando(comando As String) As String
  24.  
  25.   Dim resultado As String
  26.   'PRINT "Ejecutando: " & comando
  27.   Shell comando To resultado
  28.   If Len(resultado) = 0 Or resultado = "" Then
  29.     resultado = "Nulo"
  30.   End If
  31.   'PRINT resultado
  32.   Return resultado
  33.  
  34. End
-

Main:
-
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. ' Gambas class file
  2.  
  3. Public zoom As Integer = -5
  4.  
  5. Public Sub _new()
  6.  
  7. End
  8.  
  9. Public Sub Form_Open()
  10.  
  11.   settings.Read(Me)
  12.   Me.Title = "Lupita Zoom " & Str$(zoom + 5)
  13.   Timer1.Start()
  14.  
  15. End
  16.  
  17. Public Sub Timer1_Timer()
  18.  
  19.   Dim coordenadas As String
  20.   Dim mousex As Integer
  21.   Dim mousey As Integer
  22.  
  23.   'leo posicion del raton
  24.   'leer posicion del raton
  25.   coordenadas = funciones.ejecutar_comando("xdotool getmouselocation")
  26.  
  27.   'posicion:
  28.   Try mousex = Val(funciones.xmouse(coordenadas))
  29.   Try mousey = Val(funciones.ymouse(coordenadas))
  30.  
  31.   If Error Then Return
  32.  
  33.   If (mousex - Me.w / (10 + zoom)) < 0 Then
  34.     mousex = Me.w / (10 + zoom)
  35.   Endif
  36.  
  37.   If (mousey - Me.h / (10 + zoom)) < 0 Then
  38.     mousey = Me.h / (10 + zoom)
  39.   Endif
  40.  
  41.   If (mousex + (Me.w / (10 + zoom) * 2) / 2) > Screen.W Then
  42.     mousex = Screen.w - (Me.w / (10 + zoom) * 2) / 2
  43.   Endif
  44.  
  45.   If (mousey + (Me.h / (10 + zoom) * 2) / 2) > Screen.h Then
  46.     mousey = Screen.h - (Me.h / (10 + zoom) * 2) / 2
  47.    
  48.   Endif
  49.  
  50.   PictureBoxLupa.Picture = Desktop.Screenshot(mousex - Me.w / (10 + zoom), mousey - Me.h / (10 + zoom), Me.w / (10 + zoom) * 2, Me.h / (10 + zoom) * 2)
  51.  
  52. End
  53.  
  54. Public Sub Form_Resize()
  55.  
  56.   PictureBoxLupa.w = Me.W
  57.   PictureBoxLupa.h = Me.h
  58.  
  59. End
  60.  
  61. Public Sub PictureBoxLupa_MouseWheel()
  62.  
  63.   Debug Mouse.Delta
  64.   zoom += Mouse.Delta
  65.   If zoom <= -5 Then zoom = -5
  66.   Me.Title = "Lupita Zoom " & Str$(zoom + 5)
  67.  
  68. End
  69.  
  70. Public Sub Form_Close()
  71.  
  72.   settings.write(Me)
  73.  
  74. End
-




Descargar


Saludos



No hay comentarios:

Publicar un comentario