[英]C++ MFC How to Draw Alpha transparent Rectangle
在C ++ MFC應用程序中。 使用dc ( CPaintDC dc(this);
)
如何繪制一個可以調整的Alpha透明度矩形( LPRECT
)。
以下是我需要轉換為C ++的示例c#代碼
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.
}
你需要研究GDI +。 它有點像faff但你可以創建一個“Graphics”對象,如下所示:
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(...);
某處:)
你會發現它非常類似於你的C#代碼;)
值得注意的是,你在FromArgb
代碼中放入的75並沒有設置75%的alpha值,它實際上設置了75/255 alpha或~29%alpha。
GDI(以及MFC)對使用alpha繪圖沒有得體。 但是GDI +也可以在C ++代碼中使用。 使用#include <gdiplus.h>
並使用GdiplusStartup()初始化它。 您可以使用Graphics類,使用CPaintDC中的Graphics(HDC)構造函數創建一個。 並使用其FillRectangle()方法。 SDK文檔在這里 。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.