疯子de幸福 2024-01-21 23:45 采纳率: 0%
浏览 9

关于winform自定义控件label透明问题

最近在做一个winform自定义控件的问题,发现软件里面的控件背景不能透明,比如2个label拖放重叠位置,前面的会把底下的挡着。我想要的是,文字可以叠加显示。应该怎么弄呢?
winform的效果是这种

img

但是我需要实现的效果是下面这种

img

底下的这种效果如何实现呢,2个label文字可以叠加,不会因为背景色的问题遮挡住。 winform里面设置 控件的backcolor=Transparent,以及onpaint 重绘也是一样的。用graphics去画也是一样会被挡着,不会有重叠的效果。哪位有兴趣了 可以研究下

附加问题

img

这种边框拉伸的控件改如何实现呢。欢迎有做过的给点指导意见。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-22 08:31
    关注

    【以下回答由 GPT 生成】

    **回答:**
    针对你的第一个问题,Winform的Label控件默认是不支持透明背景的。不过你可以通过继承Label控件,自定义一个支持透明背景的Label控件来实现你的需求。
    
    以下是一个简单的示例代码:
    
    ```csharp
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace TransparentLabel
    {
        public class TransparentLabel : Control
        {
            public TransparentLabel()
            {
                SetStyle(ControlStyles.SupportsTransparentBackColor, true);
                BackColor = Color.Transparent;
                ForeColor = Color.Black; // 设置文字颜色
            }
    
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
                e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle);
            }
        }
    }
    

    在使用的时候,你可以像使用普通的Label控件一样使用这个自定义的TransparentLabel控件。

    对于你的附加问题,实现边框可以拉伸的控件可以通过继承Control类,然后在控件里面自己实现绘制边框和拉伸的逻辑。这需要一些复杂的绘图和鼠标交互逻辑,可能需要花费一些精力来完成。 ```


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月21日

悬赏问题

  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)