2010-06-05 63 views
6

¿Cómo dibujaría algo en la pantalla? no la ventana de la consola sino toda la pantalla, preferiblemente con la consola minimizada.Cómo dibujar a la pantalla en C++?

Además, ¿aparecería en una pantalla de impresión? Lo que quiero hacer es crear algo así como una capa en la parte superior de la pantalla que solo yo y mi aplicación conocemos, y aún así poder usar las aplicaciones como de costumbre.

Aquí hay un ejemplo: Digamos que quiero 2 cuadrados amarillos de 5 por 5 píxeles de tamaño que aparecen en el centro de la pantalla en la parte superior de todas las demás aplicaciones, que no se pueden hacer clic e invisibles a una pantalla de impresión.

[Editar]

me olvidó mencionar que estoy usando Visual Studio 2010 en Windows XP.

+2

¿En qué sistema operativo? – bmargulies

+1

Más contexto sobre lo que está tratando de lograr podría ser útil aquí. – Thanatos

+0

Parece que estás haciendo un mal troll que impide que las personas cierren la aplicación. : D –

Respuesta

6

En Windows puede usar la función GetDC. sólo un ejemplo minimalista:

#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; 
} 

pero desde Windows Vista es muy lento

+2

Use Direct2D en Windows Vista. – Puppy

+0

Sí, funciona, pero aparece en la pantalla de impresión: P Me pregunto si hay una forma de hacerlo invisible para cualquier captura de pantalla. – Kesarion

+0

Oye, ¿cómo cambio el color? :RE. – JSideris

4

C++ no tiene noción de una "pantalla" y, especialmente, ninguno de "gráficos". La funcionalidad necesaria es proporcionada por su sistema operativo. En muchos sistemas necesitará una "Ventana" y dibujar sobre ella. Para hacer esto de forma portátil, una biblioteca como Qt podría ayudar. Una solución de Windows fue dada por Oops. Quizás desee utilizar alguna biblioteca OpenGL, o Windows DirectDraw/Direct3D de DirectX, en caso de que quiera hacer algunas cosas en 3D con sus gráficos.

+0

Otra biblioteca de gráficos multiplataforma: http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer –

2

La biblioteca de gráficos (bastante bonita pero no actualizada) anti-grain geometry tiene enlaces muy simples para mostrar sus demostraciones en una variedad de sistemas de ventanas, puede verlos para ver ejemplos. Pero para algo mucho más complicado probablemente estés hablando de bibliotecas de sistemas operativos específicos.

2

Windows ofrece GDI/+, WPF y DirectX (incluido Direct2D en Vista +).

+0

¿Puedes mostrar un ejemplo del uso de estas bibliotecas? – Hydro

Cuestiones relacionadas