2012-06-10 9 views
5

में थोड़ा पारदर्शी ब्लू आयताकार ड्रा करें मैं मूल Win32 C++ में 0.5 (यानी, 50% पारदर्शिता) के अल्फा/पारदर्शिता मान के साथ एक नीला आयताकार कैसे आकर्षित करूं?मूल Win32 GDI

आरजीबीए() जैसे मैक्रो का उपयोग करने में विफल रहता है, मुझे यकीन नहीं है कि मैं ब्रश के अल्फा मान को कैसे निर्दिष्ट कर सकता हूं।

SetDCPenColor(hdc, RGBA(255,255,0,127)); 
SetDCBrushColor(hdc, RGBA(255,255,0,127)); 
Rectangle(hdc, 0, 0, width, height); 

उत्तर

6

मैं बहुत यकीन है कि आप GDI+ की आवश्यकता होगी कि तरह यह करने के लिए कर रहा हूँ, लेकिन यह GDI के साथ होना चाहिए:

//in rendering function 
using namespace Gdiplus; 
Graphics g (hdc); 
SolidBrush brush (Color (127 /*A*/, 0 /*R*/, 0 /*G*/, 255 /*B*/)); 
g.FillRectangle (&brush, 0, 0, width, height); 

प्लस ओर, GDI + पर, हालांकि काफी के रूप में तेजी से नहीं , इसमें अधिक क्षमताएं और दृश्य परिणाम हैं, और ऑब्जेक्ट उन्मुख है, जिसका अर्थ है कि आपको उन सभी SelectObject और DeleteObject कॉलों के बारे में चिंता करने की आवश्यकता नहीं है।

बारे में पता extra steps के एक जोड़े जब आरंभ/आदेश उपयोग करने के लिए GDI + में कार्यक्रम को समाप्त देखते हैं कि हो सकता है, और है कि सब कुछ Gdiplus नाम स्थान में है, और -lgdiplus

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

+0

मुझे नहीं लगता कि GDI + तेजी से नहीं की तुलना में GDI यह है है? जीडीआई हार्डवेयर तेज है लेकिन जीडीआई + के लिए ऐसा नहीं है (जो मैंने पढ़ा है)। –

+0

@ सेठ कार्नेगी, मैंने इसमें बहुत कुछ नहीं पढ़ा है, लेकिन मुझे याद आया कि यह तेज़ है। इसे देखकर, आप सही लगते हैं। जीडीआई + में अभी भी अधिक क्षमता है, और बेहतर छवियों का उत्पादन करता है, हालांकि। यदि आप वास्तव में गति (और एक ही समय में गुणवत्ता) के बारे में चिंतित हैं, तो डायरेक्टएक्स एक बेहद अच्छा उम्मीदवार है। – chris

+0

हां, इसमें कोई संदेह नहीं है कि जीडीआई + बेहतर छवियां उत्पन्न करता है और इसमें अधिक क्षमता है। +1। –