Cambiar imagen de from

Iniciado por Tomas1982, 10 Enero 2017, 17:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Tomas1982

Alguien me pudiera ayudar en como pudiera cambiar la imagen de fondo de mi from al hacer clip en el. Este es el código que tengo.
Código (vbnet) [Seleccionar]

Public Class Form1

    Dim MOVIENDO As Boolean = False
    Dim IMAGEN As Image
    Dim MIX As Integer
    Dim MIY As Integer

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        IMAGEN = Me.BackgroundImage
        PINTA() 'COMENTARIOS EN EL PROCEDIMIENTO
    End Sub
    Public Sub PINTA()
        Me.Opacity = 0 'FORM TRANSPARENTE
        Threading.Thread.Sleep(100) 'PARA ASEGURAR QUE SEA TRANSPARENTE
        'CREA UNA IMAGEN DE LO QUE HAY DEBAJO DEL FORM COMO FONDO
        Dim BMP As Bitmap = New Bitmap(IMAGEN.Width, IMAGEN.Height)
        Dim DIBUJO As Graphics = Graphics.FromImage(BMP)
        DIBUJO.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size)
        'AÑADE NUESTRA IMAGEN AL FONDO
        DIBUJO.DrawImage(IMAGEN, 0, 0, BMP.Width, BMP.Height)
        Me.BackgroundImage = BMP 'PONE EL MONTAJE COMO IMAGEN DEL FORM
        Me.Opacity = 1 'DEVUELVE LA OPACIDAD NORMAL.
    End Sub

    Private Sub LabelMOVER_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        'MEMORIZA LA POSICION DE LA ETIQUETA
        MIX = MousePosition.X - Me.Location.X
        MIY = MousePosition.Y - Me.Location.Y
        Me.BackgroundImage = IMAGEN 'ELIMINA EL FONDO DE LA IMAGEN
        Me.Opacity = 0.1 'PARA QUE SE VEA MENOS EL RECTANGULO DEL FORM
        MOVIENDO = True 'INICIA EL MOVIMIENTO
    End Sub

Saludos

Lekim

¿Qué quieres hacer?

¿cual es el problema?

S2s

Tomas1982

#2
Estoy tratando de hacer un pequeño programa que me inicie con el sistema y que me inhabilite la escritura a la memoria que para poder escribir en ella tenga que desbloquearla.
La idea era poner una imagen que me indicara el estado de bloqueo y que al darle clip a la imagen se desbloqueara y me cambiara de imagen, pero buscando alternativas lo solucione con un Picturebox el cual me indica el estado como dije antes y a su ves me bloqueara y desbloqueara  la escritura en memoria. Ahora resulta que tengo otro problema cambio las propiedades en el registro pero no me bloquea la escritura. Aquí les dejo el código para que me lo revisen y me digan que estoy haciendo mal. Saludo i gracias.

Código (vbnet) [Seleccionar]

Imports Microsoft.Win32

Public Class Form1
   Dim MOVIENDO As Boolean = False
   Dim IMAGEN As Image
   Dim MIX As Integer
   Dim MIY As Integer
   Dim valor As Integer = 0
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       'Me.Location = New Point(1750, 900)
       IMAGEN = Me.BackgroundImage
       PINTA() 'COMENTARIOS EN EL PROCEDIMIENTO
   End Sub

   Public Sub PINTA()
       Me.Opacity = 0 'FORM TRANSPARENTE
       Threading.Thread.Sleep(100) 'PARA ASEGURAR QUE SEA TRANSPARENTE
       'CREA UNA IMAGEN DE LO QUE HAY DEBAJO DEL FORM COMO FONDO
       Dim BMP As Bitmap = New Bitmap(IMAGEN.Width, IMAGEN.Height)
       Dim DIBUJO As Graphics = Graphics.FromImage(BMP)
       DIBUJO.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size)
       'AÑADE NUESTRA IMAGEN AL FONDO
       DIBUJO.DrawImage(IMAGEN, 0, 0, BMP.Width, BMP.Height)
       Me.BackgroundImage = BMP 'PONE EL MONTAJE COMO IMAGEN DEL FORM
       Me.Opacity = 1 'DEVUELVE LA OPACIDAD NORMAL.
   End Sub

   Private Sub LabelMOVER_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LabelMOVER.MouseDown
       'MEMORIZA LA POSICION DE LA ETIQUETA
       MIX = MousePosition.X - Me.Location.X
       MIY = MousePosition.Y - Me.Location.Y
       Me.BackgroundImage = IMAGEN 'ELIMINA EL FONDO DE LA IMAGEN
       Me.Opacity = 0.1 'PARA QUE SE VEA MENOS EL RECTANGULO DEL FORM
       MOVIENDO = True 'INICIA EL MOVIMIENTO
   End Sub

   Private Sub LabelMOVER_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LabelMOVER.MouseMove
       If MOVIENDO = True Then
           Me.Location = New Point(MousePosition.X - MIX, MousePosition.Y - MIY) 'MUEVE EL FORM SEGUN EL CAMBIO DE POSICION DE LA ETIQUETA
       End If
   End Sub

   Private Sub LabelMOVER_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LabelMOVER.MouseUp
       PINTA() 'COMENTARIOS EN EL PROCEDIMIENTO
       MOVIENDO = False 'FINALIZA EL MOVIMIENTO
   End Sub

   Private Sub LabelCERRAR1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LabelCERRAR1.Click
       Me.Close()
   End Sub

       
   Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
       If valor = 0 Then

         
           PictureBox1.Image = My.Resources.Cerrado
           Dim root As RegistryHive = RegistryHive.LocalMachine
           Dim subkey As String = "SYSTEM\CurrentControlSet\Control\StorageDevicePolicies"
           Dim value As String = "WriteProtect"
           Dim data As String = "1"

           Using key As RegistryKey = RegistryKey.OpenBaseKey(root, RegistryView.Registry64)
          key.CreateSubKey(subkey, RegistryKeyPermissionCheck.ReadWriteSubTree).
                   SetValue(value, data, RegistryValueKind.String)
           End Using
           valor = 1
       Else
           PictureBox1.Image = My.Resources.Open
           Dim root As RegistryHive = RegistryHive.LocalMachine
           Dim subkey As String = "SYSTEM\CurrentControlSet\Control\StorageDevicePolicies"
           Dim value As String = "WriteProtect"
           Dim data As String = "0"

           Using key As RegistryKey = RegistryKey.OpenBaseKey(root, RegistryView.Registry64)
               key.CreateSubKey(subkey, RegistryKeyPermissionCheck.ReadWriteSubTree).
                   SetValue(value, data, RegistryValueKind.String)
           End Using
           valor = 0
       End If
   End Sub

   Private Sub PictureBox1_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseHover
       PictureBox1.Size = New Size(Width:=52, Height:=46)
   End Sub

   Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
       PictureBox1.Size = New Size(Width:=41, Height:=36)
   End Sub
End Class



Tomas1982

#3
Ya solucione el problema, el código me queda de esta manera.

Código (vbnet) [Seleccionar]

Imports Microsoft.Win32

Public Class Form1
    Dim MOVIENDO As Boolean = False
    Dim IMAGEN As Image
    Dim MIX As Integer
    Dim MIY As Integer
    Dim valor As Integer = 0
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Me.Location = New Point(1750, 900)
        IMAGEN = Me.BackgroundImage
        PINTA() 'COMENTARIOS EN EL PROCEDIMIENTO
    End Sub

    Public Sub PINTA()
        Me.Opacity = 0 'FORM TRANSPARENTE
        Threading.Thread.Sleep(100) 'PARA ASEGURAR QUE SEA TRANSPARENTE
        'CREA UNA IMAGEN DE LO QUE HAY DEBAJO DEL FORM COMO FONDO
        Dim BMP As Bitmap = New Bitmap(IMAGEN.Width, IMAGEN.Height)
        Dim DIBUJO As Graphics = Graphics.FromImage(BMP)
        DIBUJO.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size)
        'AÑADE NUESTRA IMAGEN AL FONDO
        DIBUJO.DrawImage(IMAGEN, 0, 0, BMP.Width, BMP.Height)
        Me.BackgroundImage = BMP 'PONE EL MONTAJE COMO IMAGEN DEL FORM
        Me.Opacity = 1 'DEVUELVE LA OPACIDAD NORMAL.
    End Sub

    Private Sub LabelMOVER_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LabelMOVER.MouseDown
        'MEMORIZA LA POSICION DE LA ETIQUETA
        MIX = MousePosition.X - Me.Location.X
        MIY = MousePosition.Y - Me.Location.Y
        Me.BackgroundImage = IMAGEN 'ELIMINA EL FONDO DE LA IMAGEN
        Me.Opacity = 0.1 'PARA QUE SE VEA MENOS EL RECTANGULO DEL FORM
        MOVIENDO = True 'INICIA EL MOVIMIENTO
    End Sub

    Private Sub LabelMOVER_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LabelMOVER.MouseMove
        If MOVIENDO = True Then
            Me.Location = New Point(MousePosition.X - MIX, MousePosition.Y - MIY) 'MUEVE EL FORM SEGUN EL CAMBIO DE POSICION DE LA ETIQUETA
        End If
    End Sub

    Private Sub LabelMOVER_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LabelMOVER.MouseUp
        PINTA() 'COMENTARIOS EN EL PROCEDIMIENTO
        MOVIENDO = False 'FINALIZA EL MOVIMIENTO
    End Sub

    Private Sub LabelCERRAR1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LabelCERRAR1.Click
        Me.Close()
    End Sub

   
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        If valor = 0 Then
            PictureBox1.Image = My.Resources.Cerrado
            Dim ClaveRaíz As RegistryHive = RegistryHive.LocalMachine    ' HKEY_LOCAL_MACHINE
            ' Crea un puntero de clave de Registro para HKEY_LOCAL_MACHINE en la máquina actual
            Dim Clave = RegistryKey.OpenRemoteBaseKey(ClaveRaíz, Environment.MachineName) '<-- Para x64
            ' Crea las claves y valores en la localización especificada
            Using key As RegistryKey = Clave.CreateSubKey("SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\", RegistryKeyPermissionCheck.ReadWriteSubTree)
                key.SetValue("WriteProtect", 1, RegistryValueKind.DWord) 'Valor DWORD
            End Using
            valor = 1
        Else

            PictureBox1.Image = My.Resources.Open
            Dim ClaveRaíz As RegistryHive = RegistryHive.LocalMachine    ' HKEY_LOCAL_MACHINE
            ' Crea un puntero de clave de Registro para HKEY_LOCAL_MACHINE en la máquina actual
            Dim Clave = RegistryKey.OpenRemoteBaseKey(ClaveRaíz, Environment.MachineName) '<-- Para x64
            ' Crea las claves y valores en la localización especificada
            Using key As RegistryKey = Clave.CreateSubKey("SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\", RegistryKeyPermissionCheck.ReadWriteSubTree)
                key.SetValue("WriteProtect", 0, RegistryValueKind.DWord) 'Valor DWORD
            End Using
            valor = 0
        End If
    End Sub

    Private Sub PictureBox1_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseHover
        PictureBox1.Size = New Size(Width:=52, Height:=46)
    End Sub

    Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
        PictureBox1.Size = New Size(Width:=41, Height:=36)
    End Sub
End Class