C++

2013-04-19 9 views
7

में FillRect() का उपयोग करके मैं विजुअल सी ++ में ग्राफिक्स का उपयोग करने के लिए नया हूं। मैं सिर्फ एक रंग से भरा आयताकार बनाने की कोशिश कर रहा हूं। इसे ठीक करने के मदद की ज़रूरत है ...C++

RECT rect; 
HDC hdc; 
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL); 
rect.left=30; 
rect.right=100; 
rect.top=50; 
rect.bottom=200; 
FillRect(hdc,&rect,(HBRUSH)(RGB(40,151,151))); 

त्रुटि है:

ERROR: The variable 'rect' is being used without being initialized.

+1

वास्तव में? मैंने सोचा होगा कि काम करेगा। क्या आप निश्चित रूप से कहीं और "rect" नहीं है कि यह लागू होता है? –

+0

क्या यह एक त्रुटि या चेतावनी है? – deepmax

उत्तर

4

यह सामान्य रूप से एक चेतावनी, नहीं एक त्रुटि हो जाएगा। इस मामले में, यह भी नकली प्रतीत होता है।

यह हो सकता है काम बेहतर है अगर आप इसे की तरह कुछ प्रारंभ:

HDC hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL); 
RECT rect = {30, 50, 100, 200}; 
HBRUSH brush = CreateSolidBrush(RGB(50, 151, 151)); 

FillRect(hdc, &rect, brush); 

DeleteObject(brush); 

CreateSolidBrush के उपयोग पर ध्यान दें करो - एक HBRUSH करने के लिए एक रंग कास्टिंग काम करने की संभावना लगती है।

+0

धन्यवाद, लेकिन यह निर्दिष्ट आयताकार नहीं बना रहा है। –

+0

@shubhanksrivastava: इसे आपके द्वारा निर्दिष्ट समान निर्देशांक का उपयोग करना चाहिए। यदि वे गलत हैं तो मैं ज्यादा कुछ नहीं कर सकता। सच्चाई से, हार्ड-कोडित निर्देशांक लगभग हमेशा गलत होते हैं। –

+0

इसके अलावा मुझे लगता है कि आप CreateSolidBrush (आरजीबी (50,151,151)) का मतलब है; –

0

आपका कोड इस कोड के कारण विफल रहता:

(HBRUSH)(RGB(40,151,151)) 

आप किसी भी सार्थक तरीके से एक HBRUSH के लिए एक आरजीबी रंग डाली नहीं कर सकता। HBRUSH प्राप्त करने का एकमात्र तरीका सिस्टम आपको एक देने के लिए कहता है।

तो, आपको उस उद्देश्य के लिए एपीआई कार्यों में से एक का उपयोग करके वास्तविक ब्रश बनाने की आवश्यकता है। उदाहरण के लिए, CreateSolidBrush

HBRUSH hBrush = CreateSolidBrush(RGB(40,151,151)); 

आप ब्रश के साथ समाप्त कर लें, DeleteObject फोन प्रणाली के लिए संसाधनों वापस जाने के लिए।

एक सामान्य नियम के रूप में, हर बार जब आप एक कलाकार लिखते हैं, तो कोड को बहुत संदिग्ध मानते हैं। हमेशा बिना कोड के कोड लिखने का प्रयास करें।