2009-12-20 15 views
6

सी ++ का उपयोग कर विन 32 प्लेटफ़ॉर्म पर कंसोल विंडो में चीजों को आकर्षित करने का सबसे अच्छा तरीका क्या है?सी ++ पर एक Win32 कंसोल में ड्राइंग?

मुझे पता है कि आप प्रतीकों का उपयोग करके सरल कला खींच सकते हैं लेकिन सर्कल या यहां तक ​​कि बिटमैप्स जैसे कुछ जटिल करने का कोई तरीका है?

+4

नहीं, नहीं है। –

+0

नील: क्या विंडोज कंसोल पुराने-स्कूल वीजीए ग्राफिक्स प्रोग्रामिंग का समर्थन नहीं करता है? यह पुराने डॉस ग्राफिक्स मोड प्रोग्राम चलाने के लिए 9x दिनों में होता था ... लेकिन शायद आखिर में उन्होंने उन्हें समर्थन दिया? – itowlson

+0

हे, मुझे टर्बो पास्कल में प्रोग्राम लिखना याद है। आपको ग्राफिक्स दिखाने के लिए ड्राइवर मिलना पड़ा। मैंने अपनी खिड़की प्रणाली लिखने की भी कोशिश की। दुर्भाग्य से मैं असफल रहा :( –

उत्तर

10

नहीं, आप ऐसा नहीं कर सकते क्योंकि Win32 कंसोल उन तरीकों का समर्थन नहीं करता है। हालांकि आप कंसोल विंडो पर आकर्षित करने के लिए जीडीआई का उपयोग कर सकते हैं।

यह उस पर एक चाइल्ड विंडो बनाने के द्वारा एक कंसोल पर एक बिटमैप ड्राइंग का एक बड़ा उदाहरण है: http://www.daniweb.com/code/snippet216431.html

और यह आपको बताता है कि लाइनों और हलकों आकर्षित करने के लिए:
http://www.daniweb.com/code/snippet216430.html

यह वास्तव में कंसोल में ड्राइंग नहीं है। यह कंसोल "ओवर" कंसोल की तरह है लेकिन यह अभी भी चाल बहुत अच्छी तरह से करता है।

0

ASCII कला के बिना नहीं। डॉस के दिनों में वापस चरित्र बिटमैप्स को फिर से डिजाइन करके "काफी" करना आसान था। यह संभवतः अपने स्वयं के फ़ॉन्ट बनाकर विंडोज़ में संभव हो सकता है, लेकिन मुझे वास्तव में यह सुनिश्चित नहीं है कि

+0

फिर उन्होंने पुराने पुराने डॉस गेम को कंसोल में कैसे बनाया? –

+1

"कंसोल" नहीं है। पाठ मोड से ग्राफिक्स मोड में एक स्विच है ... – Goz

+0

कंसोल वापस तब एक ही कंसोल नहीं था जैसा कि अब है। –

2

शायद आप VGA mode का उपयोग करके डॉस प्रोग्राम के बारे में बात कर रहे हैं। एक त्वरित Google खोज C tutorial दिखाती है।

+0

वीसी ++ के साथ यह संभव है ? मैं एक नए आईडीई में उपयोग नहीं करना चाहता हूं। –

2

जैसा कि निक ब्रूक्स ने इंगित किया है, आप कंसोल ऐप्स में जीडीआई कॉल का उपयोग कर सकते हैं, लेकिन ग्राफिक्स टेक्स्ट कंसोल I/O के समान विंडो में दिखाई नहीं दे सकता है। इससे कोई फर्क नहीं पड़ता क्योंकि आप जीडीआई में टेक्स्ट तत्व खींच सकते हैं।

कंसोल ऐप्स में जीडीआई कॉल के लिए एक सरलीकृत इंटरफेस WinBGIm द्वारा प्रदान किया जाता है। यह बोर्लैंड के डॉस बीजीआई एपीआई का एक क्लोन है, लेकिन एक्सटेंशन के साथ आकार बदलने योग्य खिड़कियां, माउस इनपुट, और 24 बिट रंग मॉडल को संभालने के लिए। चूंकि यह स्रोत कोड के रूप में उपलब्ध है, यह इस तरह से जीडीआई का उपयोग करने का एक अच्छा प्रदर्शन भी करता है।

या तो दोनों कंसोल और जीडीआई विंडो दोनों के लिए संभव है, या आप यह निर्दिष्ट करके कंसोल विंडो को दबा सकते हैं कि एप्लिकेशन एक जीयूआई ऐप है (जीएनयू टूलचेन में -विंडो लिंकर विकल्प) - ध्यान दें कि एक जीयूआई निर्दिष्ट करना ऐप वास्तव में केवल कंसोल को दबाता है, अगर यह एक संदेश लूप है तो यह वास्तव में एक जीयूआई ऐप है। कंसोल होने के कारण डीबगिंग के लिए अच्छा है, क्योंकि यह वह जगह है जहां stdout और stderr डिफ़ॉल्ट रूप से आउटपुट होते हैं।

3

कंसोल स्क्रीन बफर बनाने के लिए पूरी तरह से अनियंत्रित यद्यपि संभव है, जो HBITMAP का उपयोग करता है जो कंसोल विंडो प्रक्रिया और कॉलिंग प्रक्रिया के बीच साझा किया जाता है। यह दृष्टिकोण है कि एनओवीडीएम ग्राफिक्स मोड में स्विच करने के बाद एक बार ग्राफिक्स प्रदर्शित करने के लिए लेता है।

See it.

12
#include <windows.h> 
#include <iostream.h> 


int main() 
{ 
    // Get window handle to console, and device context 
    HWND console_handle = GetConsoleWindow(); 
    HDC device_context = GetDC(console_handle); 

    //Here's a 5 pixels wide RED line [from initial 0,0] to 300,300 
    HPEN pen =CreatePen(PS_SOLID,5,RGB(255,0,0)); 
    SelectObject(device_context,pen); 
    LineTo(device_context,300, 300); 


    ReleaseDC(console_handle, device_context); 
    cin.ignore(); 
    return 0; 
} 
+0

त्रुटि: इस क्षेत्र में 'GetConsoleWindow' घोषित नहीं किया गया था – Milad

संबंधित मुद्दे