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.
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
¿Qué quieres hacer?
¿cual es el problema?
S2s
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.
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
Ya solucione el problema, el código me queda de esta manera.
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