Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何使用背景透明度绘制用户控件_C#_Wpf_Background_User Controls_Gdi+ - Fatal编程技术网

C#如何使用背景透明度绘制用户控件

C#如何使用背景透明度绘制用户控件,c#,wpf,background,user-controls,gdi+,C#,Wpf,Background,User Controls,Gdi+,我想知道如何使用背景透明度绘制用户控件,即使用户控件在运行时被提升或移动。 我的代码是 private void UserControl1_Paint(object sender, PaintEventArgs e) { var g = e.Graphics; g.Clear(Color.White); g.SmoothingMode = SmoothingMode.HighQuality;//可以反锯齿 var rectBound = new Rectangle

我想知道如何使用背景透明度绘制用户控件,即使用户控件在运行时被提升或移动。 我的代码是

private void UserControl1_Paint(object sender, PaintEventArgs e)
{
    var g = e.Graphics;
    g.Clear(Color.White);
    g.SmoothingMode = SmoothingMode.HighQuality;//可以反锯齿
    var rectBound = new Rectangle(0, 0, Width-1, Height-1);

    var b = new SolidBrush(Color.FromArgb(0, 122, 204));
    var rect = new Rectangle(2, 2, Width - 4, Height - 4);
    if(!_isSelected)//FillRectangle
        g.FillEllipse(b, rectBound);
    else
        g.FillEllipse(b, rect);

    var pen = new Pen(Color.Yellow);
    pen.DashStyle = DashStyle.DashDot;
    g.DrawLine(pen,10,10,100,10);

    pen.DashStyle = DashStyle.Dash;
    g.DrawLine(pen, 10, 15, 100, 15);

    pen.DashStyle = DashStyle.DashDotDot;
    g.DrawLine(pen, 10, 20, 100, 20);

    pen.DashStyle = DashStyle.Dot;
    g.DrawLine(pen, 10, 25, 100, 25);

    pen.DashStyle = DashStyle.Solid;
    g.DrawLine(pen, 10, 30, 100, 30);

    if (_isSelected)
    {
        pen = new Pen(Color.Black) { DashStyle = DashStyle.Dot, Width = 1 };
        g.DrawRectangle(pen, rectBound);
    }
}
这里是演示图片


运行时将创建许多用户控件,其中一些可能重叠,那么应该清除用户控件的背景。如何做到这一点?

用户控件仅对其父控件透明。这很好,但当你开始重叠它们时就不行了。只是不要使用UserControl,而是使用实现绘制的普通类。几层油漆,透明度没有问题,就像那些黄线是完全透明的。这是什么?