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