GDI+画笔透明的应用及深入理解

2879 人浏览 | 时间: 2016-01-06 17:46:33 | 作者: 阿郎

透明度是相对于背景色而言的,线条透明度越大,背景的可见度越大。在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的最好理解