在屏幕上绘制字符串 C#

3
我希望能在屏幕上简单地绘制字符串(如果可能的话,使用特定的字体和大小),并将其放置在特定位置。我正在使用C# Windows表单应用程序。不幸的是,我在网上找不到任何关于如何实现这一点的提示。
请帮忙!
Christian

你想绘制或显示任何文本吗? - anishMarokey
你想在屏幕上的任何地方绘制,还是在你的窗体内的某个地方绘制? - Hans Kesting
@Hans - 我觉得他的意思是他在网上找不到如何做这件事(即谷歌搜索没有帮助..)。但我同意,“draw”这个词确实含糊不清。 - Oren A
对不起啊,很抱歉我说得不够清楚。我想在屏幕上的任何地方绘制字符串,而不是在表单内部。 - Christian
你可以(而且应该)编辑你的问题,包括这些信息。 - ChrisF
3个回答

3

不建议您做您所要求的事情,例如请参见链接

如果您真的想做这样的事情,这里有一种可怕的方法:

    [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);
    }

请注意,我不建议任何人这样做,因为我认为应用程序不应该做这样的事情。如果你想画什么东西,应该在自己的表单/控件上进行。

我知道这个问题很老了,但对我来说还是有用的...唯一的问题是,如果我多次调用它(相同的文本,相同的位置),文本会变得非常粗体,好像每次位置都稍微偏移。你有什么想法为什么会这样? - Tizz

3
要在窗口外绘制字符串,您需要创建一个新窗口,将其掩码设置为某种颜色(例如品红色),然后在上面绘制文本 - 您可以在此处使用简单的标签。
将窗口边框样式设置为无,就可以了。
换句话说,没有一种方法可以显示“自由文本”而不附加到窗口。
对于掩码颜色,请使用“透明颜色”或类似属性(我稍后会查找它 - 手头没有VS)。

明白了。嗯,听起来像是一种折中办法,但应该足够了。非常感谢! - Christian
好的,我也建议这个答案。我在下面提交了另一个答案,但正如我在那个答案中指出的,我不认为人们应该超出他们自己应用程序的边界绘制。 - Mikael

0

检查一下this

或者也许你正在寻找DrawString 方法

希望这能帮到你


谢谢,也许这样做是值得的。谢谢! - Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接