Dessin dans une Console Win32 sur le C++?
Quelle est la meilleure façon de dessiner des choses dans la Fenêtre de la Console sur le Win 32 plate-forme à l'aide de C++?
Je sais que vous pouvez tirer de simples art à l'aide de symboles, mais est-il un moyen de faire quelque chose de plus complexe comme les cercles ou même des bitmaps?
- Neil: la console Windows pas en charge old-skool VGA graphique de programmation? Il a utilisé pour cela le 9x jours pour exécuter l'ancien mode graphique DOS des programmes... mais peut-être qu'ils ont finalement abandonné les appuyer?
- heh , je me souviens d'écrire des programmes en turbo pascal. vous avez dû obtenir un permis de montrer des graphiques. j'ai même essayé d'écrire mon propre système de fenêtre. malheureusement je n'ai pas réussi 🙁
- La fenêtre de la console est géré par l'OS, s obtenir une poignée de, il est difficile n'est pas impossible. si vous ne pouvez pas faire GDI trucs directement sur l'écran de la console de contexte, et la console API n'a pas de fonctionnalités de la carte graphique.
- l'obtention de la poignée n'est pas que dur : pastebin.ca/1721734 qui le fait très bien
- wow , j'ai juste essayé de faire un "mov al,13h" "mov ah,0" "int 10h" et tout s'est bizarre et pixely
- Ou, HWND hwnd = GetConsoleWindow() ; msdn.microsoft.com/en-us/library/ms683175(SV.85).aspx
- il n'y a PAS d'API pour dessiner des graphiques de la console. Cependant, vous avez accès à son Contexte de Périphérique et vous pouvez dessiner à l'aide de pure GDI. Notez que le défilement fonctionne partiellement, mais si votre dessin en va hors de l'écran, il sera effacé.
Vous devez vous connecter pour publier un commentaire.
Non, vous ne pouvez pas le faire parce que Win32 console ne supporte pas ces méthodes. Vous pouvez cependant utiliser l'interface graphique pour dessiner sur la fenêtre de la console.
C'est un excellent exemple de dessin d'une image bitmap sur une console par la création d'une fenêtre enfant sur elle:
http://www.daniweb.com/code/snippet216431.html
Et cela vous indique comment dessiner des lignes et des cercles:
http://www.daniweb.com/code/snippet216430.html
Ce n'est pas vraiment dans le dessin de la console si. C'est le genre de dessin "au dessus" de la console, mais il ne fait toujours le truc assez bien.
C'est possible, mais totalement sans-papiers, pour créer une console de mémoire tampon d'écran qui utilise un
HBITMAP
qui est partagé entre la fenêtre de la console processus et le processus appelant. C'est l'approche que NTVDM prend pour afficher les graphiques une fois une application DOS commutateurs de mode graphique.Voir.
Peut-être que vous parlez de programmes DOS, à l'aide de Le mode VGA. Une rapide recherche sur google montre un C tutoriel.
Comme Nick Brooks a souligné, vous pouvez utiliser des appels GDI dans la console d'apps, mais les graphiques ne s'affichent pas dans la même fenêtre que le texte de la console I/O. il ne peut pas d'importance puisque vous pouvez dessiner des éléments de texte dans l'interface GDI.
Une interface simplifiée pour des appels GDI dans la console apps est fourni par WinBGIm. C'est un clone de Borland DOS de BGI API, mais avec des extensions pour gérer de redimensionner les fenêtres, la souris, et des modèles de couleur de 24 bits. Puisqu'il est disponible sous forme de code source, il sert aussi une bonne démonstration de l'utilisation de GDI de cette façon.
Il est possible d'avoir à la fois une console et le GDI fenêtre, ou vous pouvez supprimer la fenêtre de la console en précisant que l'application est une interface graphique de l'application (l'-mwindows option de l'éditeur de liens dans la chaîne d'outils GNU) - à noter que la spécification d'une interface graphique app vraiment supprime la console, c'est vraiment une interface graphique d'une application si elle a une boucle de message. Avoir la console est bonne pour le débogage, puisque c'est là que stdout et stderr sont de sortie par défaut.
Pas sans revasculariser d'art ASCII. Retour dans les jours de DOS, il est "assez" facile à faire en modifiant le caractère de bitmaps. Elle sera peut-être possible dans windows en créant votre propre police, mais je suis vraiment pas sûr que c'est possible