9
votes

Dessin dans une console Win32 sur C ++?

Quelle est la meilleure façon de dessiner des choses dans la fenêtre de la console sur la plate-forme Win 32 à l'aide de C ++?

Je sais que vous pouvez dessiner un art simple à l'aide de symboles, mais y a-t-il une façon de faire quelque chose de plus complexe comme des cercles ou même des bitmaps?


0 commentaires

6 Réponses :


0
votes

pas sans l'art de l'USGII ASCII. De retour dans les jours de Dos, il était "assez" facile à faire en redéfinissant les morceaux de caractères. Il ne peut être possible que dans Windows en créant votre propre police, mais je ne suis vraiment pas sûr que possible


6 commentaires

Ensuite, comment ont-ils fait ces vieux jeux DOS dans la console?


La console de retour n'était alors pas la même console que celle-ci.


DOS Games n'a pas utilisé la console Win32, ils ont écrit des graphiques directement à la mémoire vidéo.


PS: Lisez sur le mode 13h ... vous trouverez probablement la plupart des informations à ce sujet :)


Tu es coincé avec GDI Buddy :)


En fait, maintenant je suis curieux s'il est possible de générer des cadres de la taille du client, Jigsaw chaque bloc dans sa propre police et remplir les écrans de ces blocs de jigsaw. Je ne sais pas si c'est possible d'enregistrer / désinserveiller les polices avec cmd à la volée. Serait assez amusant si c'est possible (bien qu'il soit probablement plus efficace et facile à créer une nouvelle fenêtre et à accrocher la fenêtre de la console pour redimensionner / déplacer pour imiter l'it et simplement dessiner avec GDI / Direct3D / OpenGL)



11
votes

non, vous ne pouvez pas simplement faire cela car Win32 console ne prend pas en charge ces méthodes. Vous pouvez cependant utiliser GDI pour dessiner sur la fenêtre de la console.

C'est un excellent exemple de dessiner un bitmap sur une console en créant une fenêtre enfant dessus: http://www.daniweb.com/code/snippet216431.html

Et cela vous dit comment dessiner des lignes et des cercles:
http://www.daniweb.com/code/snippet216430.html

Ce n'est pas vraiment dans la console cependant. C'est une sorte de dessin «sur» la console, mais cela fait toujours très bien le truc.


0 commentaires

2
votes

Peut-être que vous parlez de programmes DOS, en utilisant mode VGA . Une recherche Google rapide affiche un C Tutoriel .


1 commentaires

Est-ce que cela est possible avec VC ++? Je ne veux pas m'habituer à une nouvelle IDE.



2
votes

Comme Nick Brooks a souligné, vous pouvez utiliser des appels GDI dans les applications de console, mais les graphiques ne peuvent pas apparaître dans la même fenêtre que la console de texte I / O. Cela peut ne pas compter car vous pouvez dessiner des éléments de texte dans GDI.

Une interface simplifiée sur les appels GDI dans les apps de console est fournie par winbgim . Il s'agit d'un clone de l'API DOS BGI de Borland, mais avec des extensions pour gérer des fenêtres résiduelles, une entrée de la souris et des modèles de couleurs de 24 bits. Comme il est disponible en tant que code source, il sert également une bonne démonstration d'utiliser GDI de cette manière.

Il est possible d'avoir à la fois une console et la fenêtre GDI, ou vous pouvez supprimer la fenêtre de la console en précisant que l'application est une application GUI (l'option -MWindows Linker dans GNU Toolchain) - Notez que la spécification d'une application GII Vraiment supprimer uniquement la console, ce n'est que vraiment une application d'interface graphique s'il a une boucle de message. Avoir la console est bon pour le débogage, car il s'agit là où STDOUT et STDERR sont émis par défaut.


0 commentaires

5
votes

Il est possible, bien que totalement non documenté, de créer un tampon d'écran de console qui utilise un HBITMAP partagé entre le processus de la fenêtre de la console et le processus d'appelage. C'est l'approche que NTVDM prend pour afficher des graphiques une fois qu'une application DOS passe au mode graphique.

le voir.


0 commentaires

15
votes

Oui, c'est possible.

Obtenez le hwnd de la fenêtre de la console en utilisant getconsolewindow puis tirez dessus. xxx

Remarque: getconsolewindow a été introduit dans Windows 2000. Il est disponible lorsque _win32_winnt est réglé sur 0x500 ou plus.


0 commentaires