透明度是相对于背景色而言的,线条透明度越大,背景的可见度越大。在GDI+中之所以能够实现透明的效果,是因为他对色彩的定义使用了ARGB的方式。所以,创建带透明度的画笔,本质上就是设置画笔的色彩并在色彩中加入透明度。由于线条是由画笔绘制出来的,所以GDI+对线条透明度的支持主要是采用对画笔透明度的支持。不得不说,GDI+在这的确很强大。
void CGDIView::OnGdi7()
{
// TODO: 在此添加命令处理程序代码
this->RedrawWindow();
Graphics graphics(this->m_hWnd);
Pen blue(Color(255,0,0,255));
Pen red(Color(255,255,0,0));
int y=256;
for(int x=0; x<256; x+=5)
{
graphics.DrawLine(&blue,0,y,x,0);
graphics.DrawLine(&red,256,x,y,256);
y-=5;
Sleep(120);
}
for(y=0; y<256; y++)
{
Pen pen(Color(y,0,255,0));
graphics.DrawLine(&pen,0,y,256,y);
Sleep(20);
}
for(int x=0; x<256; x++)
{
Pen pen(Color(x,255,0,255));
graphics.DrawLine(&pen,x,100,x,200);
Sleep(20);
}
}
这个程序是对GDI+Color类封装字段Alpha的最好理解