2010-06-05 57 views
6

我該如何在屏幕上畫東西?不是控制檯窗口,而是整個屏幕,最好是控制檯最小化。如何在C++中繪製畫面?

另外,它會出現在打印屏幕上嗎? 我想要做的是在屏幕上創建一個像圖層一樣的圖層,只有我和我的應用程序知道,但仍然可以照常使用應用程序。

下面是一個例子: 假設我想要2個黃色正方形,其大小爲5x5像素,出現在所有其他應用程序頂部的屏幕中央,對於打印屏幕而言不可點擊和不可見。

[編輯]

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

+2

在什麼操作系統上? – bmargulies 2010-06-05 18:59:19

+1

更多關於你想要完成的內容可能在這裏很有用。 – Thanatos 2010-06-05 19:11:23

+0

這聽起來像是你正在製造一個糟糕的巨魔,阻止人們關閉應用程序。 :D – 2013-07-11 18:21:18

回答

6

在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中是非常慢

+2

在Windows Vista上使用Direct2D。 – Puppy 2010-06-05 19:27:31

+0

是的,它可以工作,但它會出現在打印屏幕上:P 我想知道是否有辦法讓任何屏幕截圖都看不到它。 – Kesarion 2010-06-05 19:48:42

+0

嘿,我該如何改變顏色? :d。 – JSideris 2013-03-19 07:51:16

4

C++有沒有一個「屏幕」,特別是沒有的「圖形」的概念。所需的功能由您的操作系統提供。在很多系統上,你需要一個「窗口」並在其上繪製。要做到這一點,像Qt這樣的圖書館可能會有所幫助。 Oops給出了Windows解決方案。也許你想使用一些OpenGL庫,或DirectX的Windows DirectDraw/Direct3D,以防你想用你的圖形做一些3D的東西。

+0

另一個跨平臺圖形庫: http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer – 2010-06-05 19:30:36

2

(相當不錯但不是最近更新的)圖形庫anti-grain geometry有非常簡單的綁定來在各種窗口系統上顯示它的演示,你可以看看這些例子。但對於更多涉及的內容,您可能正在討論操作系統特定的庫。

2

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

+0

你能舉一個使用這些庫的例子嗎? – Hydro 2016-08-18 17:29:18