微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我怎么能把这个 onpaint 方法放在点击功能上? c#

如何解决我怎么能把这个 onpaint 方法放在点击功能上? c#

我正在实施此帖子 Reza Aghaei 中来自 Creating Custom Picturebox with Draggable and Resizable Selection Window解决方案。

我从菜单按钮触发选择控件,矩形选择工作正常,但我不知道如何触发他添加“用半透明填充框架外的花式效果的部分颜色”,我希望在按下按钮加载可调整大小的控件后发生这种情况。

那部分的代码是这样的:

private void pictureBox1_Paint(object sender,PaintEventArgs e)
{
    e.Graphics.ExcludeClip(pictureBox1.Controls[0].Bounds);
    using (var b = new SolidBrush(Color.FromArgb(100,Color.Black)))
        e.Graphics.FillRectangle(b,pictureBox1.ClientRectangle);
}

这是我加载自定义控件的功能

private void selectToolStart(object sender,EventArgs e)
{
    var s = 100;
    var c = new FrameControl();
    c.Size = new Size(s,s);
    c.Location = new Point((pictureBox1.Width - s) / 2,(pictureBox1.Height - s) / 2);
    pictureBox1.Controls.Add(c);
}

欢迎任何建议。提前致谢

更新:

在你们的帮助下,我得到了这个代码

private void pictureBox1_Paint(object sender,PaintEventArgs e)
{
    if (pictureBox1.HasChildren == true)
    {
        e.Graphics.ExcludeClip(pictureBox1.Controls[0].Bounds);
        using (var b = new SolidBrush(Color.FromArgb(100,pictureBox1.ClientRectangle);
    }
    pictureBox1.Invalidate();
}

更新 2

接受TaW的建议 我将无效从绘制事件移动到 selectToolStart() 函数。所以这次代码保持如下

private void selectToolStart(object sender,(pictureBox1.Height - s) / 2);
    pictureBox1.Controls.Add(c);
    pictureBox1.Invalidate();
}

和Paint事件保持如下

private void pictureBox1_Paint(object sender,Color.Black)))
        {
            e.Graphics.FillRectangle(b,pictureBox1.ClientRectangle);
        }
    }
}

看来它完成了工作。请提供任何反馈或建议。 谢谢大家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。