Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - bybaal

#41
Discúlpame, pero no queda muy claro los dos primeros pasos si pudiera ejemplificar un poco, sería magnifico.

Gracias

Cita de: Eleкtro en 22 Diciembre 2015, 18:15 PM
Creo que te refieres a lo siguiente, y te sugiero hacerlo de la siguiente manera:

1. Mantener una referencia a la imagen original, opaca.
2. Crear una copia de la imagen opaca, con la transparencia deseada;
   cada vez que quieras modificar la transparencia haces una copia de la imagen opaca, y liberas los recursos de la copia semi-transparente anterior.

Código sacado de mi framework y modificado un poco a las circunstancias:
Código (vbnet) [Seleccionar]
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Sets the opacity of an <see cref="Image"/>.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <example> This is a code example.
''' <code>
''' Dim img As Image = Bitmap.FromFile("C:\File.png").SetOpacity(opacity:=0.5F)
''' </code>
''' </example>
''' ----------------------------------------------------------------------------------------------------
''' <param name="sender">
''' The source <see cref="Image"/>.
''' </param>
'''
''' <param name="opacity">T
''' The target opacity level, from <c>0.0</c> to <c>1.0</c>.
''' </param>
''' ----------------------------------------------------------------------------------------------------
''' <returns>
''' The <see cref="Image"/> with the opacity applied.
''' </returns>
''' ----------------------------------------------------------------------------------------------------
''' <exception cref="ArgumentOutOfRangeException">
''' opacity
''' </exception>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
Public Function SetOpacity(ByVal sender As Image, ByVal opacity As Single) As Image

   If (opacity < 0.0F) OrElse (opacity > 1.0F) Then
       Throw New ArgumentOutOfRangeException(paramName:="opacity")

   Else
       Using g As Graphics = Graphics.FromImage(sender)

           Dim matrix As New ColorMatrix
           matrix.Matrix33 = opacity

           Using ia As New ImageAttributes

               ia.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap)
               g.DrawImage(sender, New Rectangle(0, 0, sender.Width, sender.Height), 0, 0, sender.Width, sender.Height, GraphicsUnit.Pixel, ia)

           End Using

       End Using

       Return sender

   End If

End Function


Source original:

Saludos!

#42
Hola a todos, necesito ayuda para lograr poner un picturebox semitransparente, no me refiero a un png o gif con fondo transparente , lo que necesito es una imagen, por ejemplo un cuadrado azul, que se vea un 25% transparente y poder cambiar el valor de transparencia en tiempo de ejecución.

Gracias por la ayuda de los que puedan.
#43
Muchas Gracias, Muy buena la ayuda una explicación de libro.

Cita de: Eleкtro en 22 Diciembre 2015, 02:05 AM
Buenas!

1. Por favor, postea las preguntas de Vb.Net en la sección correcta. (hay muchos posts movidos que deberían haberte dado ya una pista...)

2. Debes utilizar las etiquetas Geshi para insertar código, lee las reglas del foro de programación general, gracias.




Es normal lo que te ocurre, ya que cuando activas el parámetro "wait", el hilo propietario desde el que has realizado la llamada se detiene por tiempo indefinido hasta que el proceso finalize su ejecución.

Para solucionar el problema que has descrito se me ocurren al menos dos maneras distintas,
pero antes de nada por cuestiones de productividad, rendimiento, y adquisición de buenas costumbres, te aconsejo parar ahora mismo de utilizar la función Microsoft.VisualBasic.Shell y cualquier otro miembro de ese espacio de nombres; reemplazalo por el uso de la Class System.Diagnostics.Process.

1. Puedes iniciar el proceso de la siguiente manera:
Código (vbnet) [Seleccionar]
Threading.Tasks.Task.Factory.StartNew(
   Sub()
       Using p As New Process
           p.StartInfo.FileName = "calc.exe"
           p.StartInfo.WindowStyle = ProcessWindowStyle.Normal
           p.Start()
           p.WaitForExit()
       End Using

       MessageBox.Show("cerrada la aplicación", "Calc.exe",
                       MessageBoxButtons.OK, MessageBoxIcon.Information)

   End Sub, TaskCreationOptions.None)


Nota:
En otras circunstancias tal vez podrias preferir utilizar el flag TaskCreationOptions.LongRunning para forzar la creación de un nuevo hilo en el grupo de hilos por defecto, ganando así más velocidad de inicialización de la tarea al no esperar en la cola de hilos.

2. O puedes suscribirte al evento Process.Exited:
Código (vbnet) [Seleccionar]
Friend WithEvents Calc As Process

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

   Calc = New Process
   Calc.EnableRaisingEvents = True
   Calc.StartInfo.FileName = "calc.exe"
   Calc.StartInfo.WindowStyle = ProcessWindowStyle.Normal
   Calc.Start()

End Sub

Private Sub Calc_Exited() Handles Calc.Exited

   MessageBox.Show("cerrada la aplicación", "Calc.exe",
                           MessageBoxButtons.OK, MessageBoxIcon.Information)

   ' Seguir con la lógica aquí...

End Sub


Saludos
#44
Necesito ejecutar una aplicación con la función shell, utilizando el parámetro Wait = True, hacer esto mientras un timer cambia constantemente la propiedad Text del Formulario. El problema es que mientras se espera a que termine dicha aplicación, el timer deja de actualizar la propiedad Text del Formulario.

Aquí les dejo el código de ejemplo para ver si alguien puede ayudarme

Código (vbnet) [Seleccionar]
Public Class Form1
   Dim WithEvents tmrEfect As New Timer With {.Enabled = True, .Interval = 1000}

   Private Sub tmrEfect_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrEfect.Tick
       Me.Text = Now
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Shell("calc.exe", AppWinStyle.NormalFocus, True)
       MsgBox("cerrada la aplicación")
   End Sub
End Class
#45
Mozilla Thunderbird, no tiene opciones para conectarse usando una cuenta de acceso teléfonico, por lo que tampoco tiene opción para desconectarse automaticamente al terminar.

Necesito algún cliente de correo que en win8.1 haga lo mismo que hacia el viejo Outlook Express en winXP, que se desconectaba automaticamente de la conexión de acceso telefónico.

Ya he probado con Windows Live Mail 2012, Windows Live Mail 2009, Mozilla Thunderbird, Microsoft Outlook 2013

Por favor, ayuda.
#46
Yo uso Windows Live Mail 2012 en Windows 8.1 y una cuenta de acceso telefónico para revisar mi correo y el problema es que Windows Live Mail 2012 no se desconecta automaticamente al terminar de enviar y recibir los correos. ¿Cómo puedo lograr que esto ocurra?

Gracias por sus aportes
#47
Necesito imprimir desde VB.NET cualquier archivo (ej: JPG, PNG, DOC, XLS, PDF, PPT) que esté guardado en la pc. Usando el cuadro de diálogo Imprimir., para permitir seleccionar las páginas que quiero imprimir o cualquier otra opción permitida en este diálogo.

Muchas Gracias
por sus aportes