【问题标题】:How to draw to screen in c++?如何在 C++ 中绘制到屏幕?
【发布时间】:2010-06-05 18:55:54
【问题描述】:

如何在屏幕上绘制一些东西?不是控制台窗口,而是整个屏幕,最好将控制台最小化。

另外,它会出现在打印屏幕上吗? 我想做的是在屏幕顶部创建一个只有我和我的应用程序知道但仍然能够照常使用应用程序的图层。

这是一个例子: 假设我想要 2 个 5 x 5 像素大小的黄色方块出现在所有其他应用程序之上的屏幕中心,不可点击且对打印屏幕不可见。

[编辑]

我忘了提到我在 Windows XP 上使用 Visual Studio 2010。

【问题讨论】:

  • 更多关于你想要完成的事情的上下文可能在这里有用。
  • 听起来你正在制作一个糟糕的巨魔,阻止人们关闭应用程序。 :D

标签: c++ screen draw invisible


【解决方案1】:

在 Windows 中,您可以使用 GetDC 功能。 只是一个简约的例子:

#include <Windows.h>
#include <iostream>

void drawRect(){
    HDC screenDC = ::GetDC(0);
    ::Rectangle(screenDC, 200, 200, 300, 300);
::ReleaseDC(0, screenDC);
}
int main(void){
    char c;
    std::cin >> c;
    if (c == 'd') drawRect();
    std::cin >> c;
    return 0;
}

但由于 Windows Vista,速度很慢

【讨论】:

  • 在 Windows Vista 上使用 Direct2D。
  • 是的,它可以工作,但它会显示在打印屏幕中:P 我想知道是否有办法让它对任何屏幕截图都不可见。
  • 嘿,我该如何改变颜色? :D.
【解决方案2】:

C++ 没有“屏幕”的概念,尤其是“图形”。所需的功能由您的操作系统提供。在许多系统上,您将需要一个“窗口”并在其上绘图。要做到这一点,像 Qt 这样的库可能会有所帮助。 Oops 提供了一个 Windows 解决方案。也许你想使用一些 OpenGL 库,或者来自 DirectX 的 Windows 的 DirectDraw/Direct3D,以防你想用你的图形做一些 3D 的东西。

【讨论】:

【解决方案3】:

Windows 提供 GDI/+、WPF 和 DirectX(包括 Vista+ 上的 Direct2D)。

【讨论】:

    【解决方案4】:

    (相当不错但最近没有更新)图形库anti-grain geometry 具有非常简单的绑定,可以在各种窗口系统上显示其演示,您可以查看这些示例。但对于更多涉及的内容,您可能正在谈论特定于操作系统的库。

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      相关资源
      最近更新 更多