none
用户控件,Paint事件中去除背景 RRS feed

  • 问题

  • 在用户控件中,我想实现不同的图像,比如 圆形, 矩形 三角形 等等,这些形状只占用用户控件可见区域的一部分,其余空白部分,以透明形式存在,我想问的是 gdi+ 如何实现?即 去除背景。
    2013年6月25日 4:47

全部回复

  • 可否给出你的原来结果以及最终要的结果?

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年6月25日 5:40
    版主
  •         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);
                }
     
            }

    2013年6月25日 9:13
  • 有兄弟知道不?在线等。。。。
    2013年6月26日 12:22
  • var g = e.Graphics;
                ////g.Clear(Color.White);

    http://feiyun0112.cnblogs.com/

    2013年8月30日 4:36
    版主