none
Problema - Posicionamiento de un Picturebox dentro de Otro durante ejecución (Controls.Add) RRS feed

  • Pregunta

  • Buenas tardes foro ! Soy nuevo en la comunidad y quisiera hacer una consulta:

    He intentado colocar un Picturebox dentro de otro para generar transparencias utilizando el siguiente código:

    Public Class Form1

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            PictureBox1.Controls.Add(PictureBox2)
            PictureBox2.BackColor = Color.Transparent
        End Sub

    End Class

    El PictureBox1 es simplemente un PictureBox con BackColor en Black, el Picturebox2 tiene una imagen PNG con Transparencias. La transparencia funciona pero...

    El problema es que cuando intento ejecutar habiendo posicionado al PictureBox2 dentro del Picturebox1 en X Location, el Picturebox2 se mueve sumando la Location en el Formulario 2 veces en vez de tomar la del PictureBox1.

    Mi consulta es: Que es lo que esta causando que la imagen se desplace durante la ejecución ?

    Aclaro, esto fue hecho en un proyecto desde cero, todo el código que he tocado es el de ahí arriba. No se si es que debo configurar algo para que no se desplace, he probado cambiar el atributo "Anchor" anclandolo a en los 4 sentidos y poniendo el atributo "Modifiers" en "Private" , pero aun así se desplaza durante la ejecución.

    Dejo link la imagen de mi problema, puesto que el foro no permite subir fotos:

    https://image.ibb.co/iHXsnc/Sin_t_tulo.png

    jueves, 1 de marzo de 2018 18:35

Respuestas

  • Los valores de las propiedades Left y Top hacen referencia siempre al control contenedor.

    El problema es que cuando creas el PictureBox2 en el diseñador lo estás añadiendo a la colección de controles del formulario. La posición (Left y Top) del control entonces es relativa al espacio del formulario.

    Luego en tu código mueves el control a la colección de controles del PictureBox1, manteniendo las propiedades Left y Top del PictureBox2. A partir de este momento la posición del control se calcula utilizando las propiedades Left y Top pero tomando como referencia su control contenedor actual: el PictureBox1.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    sábado, 3 de marzo de 2018 13:57