C# 在屏幕C上绘制字符串#

C# 在屏幕C上绘制字符串#,c#,winforms,gdi+,C#,Winforms,Gdi+,我只想在屏幕上(特定位置)画一个字符串(如果可能的话,用特定的字体和大小)。我在一个C#windows窗体应用程序中。不幸的是,我在网上找不到任何关于如何做到这一点的提示 请帮忙 Christian若要在窗口外绘制字符串,您必须创建一个新窗口,将其遮罩设置为某种颜色(如洋红色),然后在其上绘制文本-您可以在此处使用简单的标签 将窗口边框样式设置为“无”,就可以了 换句话说,如果没有附加窗口,就无法显示“自由文本” 对于遮罩颜色,请使用“透明度颜色”或类似属性(我稍后会查看它-手头没有VS)检查

我只想在屏幕上(特定位置)画一个字符串(如果可能的话,用特定的字体和大小)。我在一个C#windows窗体应用程序中。不幸的是,我在网上找不到任何关于如何做到这一点的提示

请帮忙


Christian

若要在窗口外绘制字符串,您必须创建一个新窗口,将其遮罩设置为某种颜色(如洋红色),然后在其上绘制文本-您可以在此处使用简单的标签

将窗口边框样式设置为“无”,就可以了

换句话说,如果没有附加窗口,就无法显示“自由文本”

对于遮罩颜色,请使用“透明度颜色”或类似属性(我稍后会查看它-手头没有VS)

检查

或者你可能正在寻找一种方法


希望这将有助于

真正不建议做您要求的事情,请参阅例如

如果你真的想做这样的事情;下面是一个令人毛骨悚然的方法:

    [DllImport("User32.dll")]
    public static extern IntPtr GetDC(IntPtr hwnd);

    [DllImport("User32.dll")]
    public static extern void ReleaseDC(IntPtr dc);

    protected override void OnPaint(PaintEventArgs e)
    {
        IntPtr desktopDC = GetDC(IntPtr.Zero);

        Graphics g = Graphics.FromHdc(desktopDC);

        g.DrawString("Test", new Font(FontFamily.GenericSerif, 12), Brushes.Blue, 300, 300);
        g.Dispose();

        ReleaseDC(desktopDC);
    }

请注意,我不建议任何人这样做,因为我认为应用程序不应该这样做。如果你想画一些东西,你应该在你自己的窗体/控件上画。

你想画或显示任何文本吗?你想在屏幕上的任何地方,还是在你的窗体内的某个地方画?@Hans-我想他的意思是他在web上找不到如何画(例如,谷歌没有帮助…)。但我同意“画画”这个词是模棱两可的。嗯,是的,很抱歉我不精确。我想在屏幕上的任意位置绘制字符串,而不是在表单中。您可以(也应该)编辑您的问题以包含此信息。我明白了。这听起来像是一个解决办法,但已经足够了。非常感谢你!好的,我也推荐这个答案。我确实在下面提交了另一份,但正如我在其中指出的,我认为人们不应该在自己申请的边界之外画画。谢谢,也许这样做是值得的。非常感谢。我知道这是非常古老的,但这对我很有用。。。唯一的问题是,如果我多次调用(相同的文本,相同的位置),文本会变得非常粗体,好像每次的位置都有点偏离。你知道为什么吗?