尝试将层加载到控件 c#

本文关键字:控件 加载 | 更新日期: 2023-09-27 17:57:05

>im 尝试将一些矩形加载为表单的"层",我加载了一个图像作为表单的一层,但是这些矩形的问题在于它们"覆盖"图像,擦除它的一部分,我希望它们被视为图像的框以显示信息,并且我还希望能够将一个矩形叠加到另一个矩形上而不会相互擦除。

这是矩形的类

namespace Imagen_capas
{
   class rectangulotransp : UserControl
   {
      public Pen pen11;
      private Rectangle Myrectangle;

     public rectangulotransp(int x,int y,int alto, int ancho, Rectangle tamacontrol)
      {
          Size = tamacontrol.Size;
          Location = tamacontrol.Location;
          SetStyle(ControlStyles.SupportsTransparentBackColor, true);
          BackColor = Color.Transparent;
          Myrectangle = new Rectangle(x, y, alto, ancho);
          pen11 = nuevopen();

      }  

      private Pen nuevopen()
      {
          Pen mypen1 = new Pen(Color.Red);
          return mypen1;
      }
      protected override void OnPaint(PaintEventArgs e)
      {
          Graphics g = e.Graphics;
          g.DrawRectangle(pen11,Myrectangle);
          base.OnPaint(e);
      }
  }

}

和表单的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace Imagen_capas
{   
    public partial class Form1 : Form
    {
    rectangulotransp rect;
    rectangulotransp rect2;
        public Form1()
        {
            InitializeComponent();
            rect = new rectangulotransp(50, 14, 500, 100,new     Rectangle(0,0,Width+400,Height));
           // this.Controls.Add(rect);
             rect2 = new rectangulotransp(0, 50, 20, 100,new     Rectangle(20,50,Width,Height));
            this.Controls.Add(rect2);
            this.Controls.Add(rect);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }
    }

尝试将层加载到控件 c#

我认为

问题是当您设置透明背景时,矩形正在使用表单背景色,在您看来,它正在擦除另一个矩形。也许您可以尝试将透明矩形绘制为 4 条线而不是矩形。

希望对您有所帮助

我的朋友们,我用这种方式解决了它。

我为矩形创建了一个类,然后为

控件创建了一个类,其中我按照您告诉我的那样绘制了所有矩形,然后是图像,然后我使用 controls.add 将其添加为窗体的一层,这样我也能够在它下面放置一个图像而不会被矩形擦除。

谢谢!!