首页 > 解决方案 > 如何在 c# 中以表单形式添加的 UserControl 上绘制渐变?

问题描述

加载表单时将添加 UserControls 2 列和多行
以显示最近添加的数据
行数取决于屏幕的高度。
取决于屏幕宽度的列数

if ((int)count_columns == 2)
{
    for (int sp = 0; sp <= (int)count_rows; sp++)
    {
        //add UserControl
        latest latest1 = new latest();
        latest1.Name = String.Concat("latest1_", sp.ToString());
        latest1.Left = (leftPanel.Width + (int)space_between_columns);
        latest1.Top = ((topPanel.Height + (32 * sp)) + (latest1.Height * sp)) + 32;
        this.Controls.Add(latest1);

        latest latest2 = new latest();
        latest2.Name = String.Concat("latest2_", sp.ToString());
        latest2.Left = (2 * (int)space_between_columns + latest2.Width + leftPanel.Width);
        latest2.Top = ((topPanel.Height + (32 * sp)) + (latest1.Height * sp)) + 32;
        this.Controls.Add(latest2);
    }
}

当尝试在 UserControl 上绘制渐变时

private void latest1_Paint(object sender, PaintEventArgs e)
{
    Pen white = new Pen(Color.White);
    var rec = new Rectangle(0, 0, 500, 145);
    var brush = new System.Drawing.Drawing2D.LinearGradientBrush(
                    rec, 
                    Color.FromArgb(255, Color.DarkBlue), 
                    Color.FromArgb(0, Color.DarkBlue), 
                    90f);
    e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
    e.Graphics.FillRectangle(brush, rec);
}

没啥事儿

标签: c#

解决方案


推荐阅读