ventana varias una transparente superponer sobreponer quitar otro mostrar imagenes imagen hacer form fondo dentro como cambiar c# winforms transparency picturebox

c# - varias - ¿Hacer cuadros de imagen transparentes, cada uno superpuesto al otro con una esquina?



sobreponer ventana c# (1)

La transparencia en winforms es un poco engañosa, ya que no es realmente transparencia.
Los controles de Winforms imitan la transparencia al pintar la parte de su control principal que ocultarían en lugar de su propio fondo.
Sin embargo, no pintarán los otros controles que podrían estar parcialmente cubiertos por ellos.
Esta es la razón por la cual sus principales cuadros de imágenes ocultan su cuadro de imagen grande.

Puede superar esto creando un control personalizado que herede de PictureBox y anule su método OnPaintBackground (tomado, con ligeros ajustes, de este artículo del proyecto de código ):

protected override void OnPaintBackground(PaintEventArgs e) { base.OnPaintBackground(e); Graphics g = e.Graphics; if (this.Parent != null) { var index = Parent.Controls.GetChildIndex(this); for (var i = Parent.Controls.Count - 1; i > index; i--) { var c = Parent.Controls[i]; if (c.Bounds.IntersectsWith(Bounds) && c.Visible) { using (var bmp = new Bitmap(c.Width, c.Height, g)) { c.DrawToBitmap(bmp, c.ClientRectangle); g.TranslateTransform(c.Left - Left, c.Top - Top); g.DrawImageUnscaled(bmp, Point.Empty); g.TranslateTransform(Left - c.Left, Top - c.Top); } } } } }

Microsoft ha publicado un artículo de la base de conocimiento para resolver este problema hace mucho tiempo, sin embargo, está un poco desactualizado y su código de muestra está en VB.Net

Otra opción es pintar las imágenes usted mismo, sin cuadros de imagen para sostenerlas, utilizando el método Graphics.DrawImage .
El mejor lugar para hacerlo es probablemente en el método OnPaint del formulario.

TL; DR: mira la imagen de abajo

Así que estoy tratando de hacer una pequeña imagen, y yo y las personas a mi alrededor estamos un poco sin ideas.

Tengo una mesa (la sentada + comiendo una) en el medio (vista desde arriba), y personas sentadas a su alrededor. Esas personas son redondas, como lo es la mesa.

Cada persona tiene su propio cuadro de imagen, solo uso una imagen, la giro y la configuro como imagen en el cuadro siguiente.

El problema ahora es: Los cuadros de imagen de las personas en las esquinas se superponen a la mesa con la esquina vacía, en la imagen hay transparencia allí. Debería mostrar la tabla debajo, pero en su lugar muestra el fondo del formulario :(

Editar: Todos los fondos se configuran como transparentes, el formulario tiene la canica como fondo y el blanco ("Ventana") como color de fondo.

Puse a una persona en la parte de atrás y otra al frente, así que es fácil ver:

Edición 2 (igual que ocmment):

En los últimos dos días leí esta pregunta unas 10 veces, y ninguna que describió este problema exacto ha tenido una respuesta real. Al intentar presionar a uno de ellos, me dijeron que debía publicar una nueva pregunta.

Ejemplo: ¿Cómo hacer que Picturebox sea transparente?