如何制作中途褪色文字?

时间:2016-02-23 00:21:14

标签: c# winforms .net-4.0 drawing

任务是一个简单的概念,只是不确定一个简单的方法来做我所要求的。

目标

让文本框,标签,自定义用户控件或其他类型的控件显示多行文字并将其淡出一半(如下图所示)。我希望它是透明的(如图中所示)并且当然可以编辑。我在考虑像自定义UserControl : label或类似的东西。也许覆盖标签的OnPaint并绘制表单内容(控件后面的所有内容)来模拟透明度。然后绘制文本但不知何故可能会应用某种类型的渐变滤镜?老实说,我不知道怎么做,但希望别人这样做。

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:1)

我制定了一个解决方案,它看起来很完美,我需要花更多的时间在它上面添加对文本对齐等的支持。但是现在我最终想出了这个......

  

注意:创建一个新的用户控件并在代码区域中添加它。也   请记住,以确保该新控件的设计者使用   相同的命名空间" InfinityLabel"。最后一件事,别忘了设置你的   新标签(InfinityLabel)到BackColor =透明。

using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace InfinityLabel
{
    public partial class InfinityLabel : Label
    {
        public InfinityLabel()
        {
            InitializeComponent();
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            Rectangle rect = new Rectangle(0, 0, Width, Height);
            LinearGradientBrush brush =
                new LinearGradientBrush(
                    rect, 
                    Color.FromArgb(255, ForeColor),
                    Color.FromArgb(60, ForeColor), 
                    90f);
            e.Graphics.DrawString(Text, Font, brush, rect);
        }
    }
}