2010-11-03 13 views
6

को सी ++ एमएफसी एप्लिकेशन में कैसे आकर्षित करें।()सी ++ एमएफसी अल्फा पारदर्शी आयत

की डीसी का उपयोग कर मैं कैसे एक अल्फा पारदर्शिता के साथ एक आयत (LPRECT) आकर्षित करते हैं कि मैं समायोजित कर सकते हैं।?

के बाद एक उदाहरण सी # कोड है जो मैं सी ++

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics g = e.Graphics; 
    Color color = Color.FromArgb(75,Color.Red); //sets color Red with 75% alpha transparency 

    Rectangle rectangle = new Rectangle(100,100,400,400); 
    g.FillRectangle(new SolidBrush(color), rectangle); //draws the rectangle with the color set. 
} 

उत्तर

9

आपको जीडीआई + में देखना होगा। एक faff की इसकी एक सा है, लेकिन इस प्रकार आप एक "ग्राफिक्स" वस्तु बना सकते हैं:

Gdiplus::Graphics g(dc.GetSafeHdc()); 
Gdiplus::Color color(192, 255, 0, 0); 

Gdiplus::Rect rectangle(100, 100, 400, 400); 
Gdiplus::SolidBrush solidBrush(color); 
g.FillRectangle(&solidBrush, rectangle); 

#include <gdiplus.h> 

करने के लिए मत भूलना और

GdiplusStartup(...); 

कहीं कॉल करने के लिए:)

आप देखेंगे कि यह आपके सी # कोड के समान सुंदर है;)

यह ध्यान देने योग्य है कि आपके FromArgb कोड में डाले गए 75 75% अल्फा सेट नहीं करते हैं, यह वास्तव में 75/255 अल्फा या ~ 2 9% अल्फा सेट करता है।

+0

यदि मैं GdiplusStartup() का आह्वान करता हूं; क्या यह जरूरी है कि मुझे GdiplusShutdown का आह्वान करना चाहिए? मुझे लगता है कि मुझे चाहिए। और अगर मुझे चाहिए, तो यह पेंट इवेंट के भीतर होना चाहिए? –

+1

GdiplusStartup को आपके एमएफसी ऐप के InitInstance फ़ंक्शन से हमें एक बार लागू किया जाना चाहिए। GdiplusShutdown को तब एक बार बुलाया जाना चाहिए जब आपका एप्लिकेशन निकलता है। – Goz

3

GDI (और इस प्रकार MFC) एक अल्फा के साथ बैठक के लिए कोई सभ्य समर्थन हासिल है में परिवर्तित करने की जरूरत है। लेकिन जीडीआई + सी ++ कोड में भी उपलब्ध है। #include <gdiplus.h> का उपयोग करें और इसे GdiplusStartup() के साथ प्रारंभ करें। आप ग्राफिक्स क्लास का उपयोग कर सकते हैं, अपने सीपीएन्टडीसी से ग्राफिक्स (एचडीसी) कन्स्ट्रक्टर के साथ एक बना सकते हैं। और इसकी FillRectangle() विधि का उपयोग करें। एसडीके दस्तावेज़ are here

-1
int StartHoriz,StartVert,BarWidth,BarHeight; // rect start, width and height 
StartHoriz=0; 
StartVert=100; 
width = 100; 
height=120; 
CDC* pCDC = GetDC();  // Get CDC pointer 
CRect Rect(StartHoriz,StartVert,BarWidth,BarHeight); //create rectangle dimensions 
pCDC->Rectangle(Rect); //draw rectangle 
संबंधित मुद्दे