在C#中的Windows任务栏上绘图

时间:2016-03-28 17:41:39

标签: c# system.drawing taskbar

我想为Windows制作二进制时钟。但我希望它替换默认时钟(2个时钟是不理想的)。

因此,其中一种方法就是将旧二进制时钟绘制在旧时钟之上。我怎么做?允许使用外部库。

我已经尝试过这样的事了:

    public Form1()
    {
        InitializeComponent();
        this.Paint += new PaintEventHandler(Form1_Paint);
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.FillEllipse(new SolidBrush(Color.Blue), new Rectangle(1500, 790, 20, 20));
    }

但它没有到达任务栏(右下角): ellipse not reaching taskbar

如果事实证明是不可能的话,我会再提出一些关于桌频的问题。但是现在我要求在Windows任务栏上绘图。

2 个答案:

答案 0 :(得分:3)

这种方法有很多问题。

  1. 任务栏与您的应用程序分开存在。您无法轻松地使用它,您需要通过Windows SDK与其进行交互(例如,自定义您的应用程序的弹出式预览)。此外,如果Windows允许每个想要在任务栏上绘制的应用程序都这样做,那将是一个糟糕的主意。如果每个人都画画,谁会赢?

  2. 即使您可以在其上进行绘制,您也必须考虑它及其弹出窗口所做的每一件事。它有多宽?如果您点击日历会发生什么?如果它的风格不同怎么办?如果有多个时钟怎么办?用户是否有权利用时钟做事?

  3. 没有内置方法来更换时钟。替换确实存在,但主要是通过挂钩弹出窗口并执行我在第二个选项中列出的内容。请参阅T-Clock作为示例。

  4. 你走另一条路线会好得多。

答案 1 :(得分:0)

Chris Hannon的答案很好,但也许我的这个问题可以帮助你更好:C# Display text on the taskbar | Windows 10请查看Shahrooz Ansari批准的答案。