小编Wol*_*000的帖子

Windows窗体:允许重叠控件的正确方法是什么?

我正在制作一个测试程序,看看我能将事件添加到自定义绘制的System.Windows.Form.Control对象中.如果我能做好这件事,那么我可以为以后制作更先进的东西.

我正在处理附加图像的问题.我有目的地画了两个圈子.目标是让一个圆圈与另一个圆圈重叠.出于本测试程序的目的,我不关心哪个圆圈重叠哪个.但是,我确实关心角落.

希望两个圆圈恰好重叠而不是突出的角落.

上图显示中心圆被左圆圈掩埋,但左圆也是绘制角落并用它们覆盖中心圆.我希望隐藏这些角落,或者至少让它们变得透明.我确实读过有一种方法可以使控件透明,但在BackColor上使用Color.Transparent会因为某些原因而给我黑色,而不是与画面板的颜色相匹配.

下面是GUI的代码部分(设计器不包括在内,但关键部分应该是显而易见的).

namespace PaintingFirstAttempt
{
    using System;
    using System.Drawing;
    using System.Windows.Forms;

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void BtnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void BtnClear_Click(object sender, EventArgs e)
        {
            Graphics g1 = this.paintPanel.CreateGraphics();
            g1.Clear(this.paintPanel.BackColor);
            g1.Dispose();
        }

        private void PaintPanel_MouseDown(object sender, MouseEventArgs e)
        {
            this.paintPanel.Controls.Add(new EventableCircle { Location = new Point(e.X - 16, e.Y - 16), Size = new Size(32, 32) });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是自定义圈子.

namespace …
Run Code Online (Sandbox Code Playgroud)

c# controls winforms

9
推荐指数
1
解决办法
1404
查看次数

标签 统计

c# ×1

controls ×1

winforms ×1