Gradient fill

Carrying out a gradient fill is something very simple to do. The following code carries this out (whether you require a palette or not).

Aside from this function, you need to either have a CRect attribute in the class (m_rcClient), or set the width and height of the fill in the function itself. Also, a bool which indicates whether we need to use a palette or not.

This example carries out a blue gradient fill. If you want to use other colours, then you can do so easily for Red and Green (place the calculation in the Red or Green component of the RGB call!).

It really depends how sophisticated you want to get, you typically need to balance flexibility with speed when it comes to drawing.
void CImageWnd::DoGradientFill(CDC *pDC) const
{
	int nWidth = m_rcClient.Width(); 
	int nHeight = m_rcClient.Height();
	CRect rectangle;

	if(m_bUsePalette)
	{
		for(int i = 0; i < nHeight; ++i) // Fill in strip
		{
			rectangle.SetRect(0, i, nWidth, i + 1);
			
			CBrush brush;
			brush.CreateSolidBrush(RGB(0, 0, 255 - MulDiv(i,>252, nHeight)));
			pDC->FillRect(&rectangle, &brush);
		}
	}
	else
	{
		for(int i = 0; i < nHeight; ++i) // Fill in strip
		{
			rectangle.SetRect(0, i, nWidth, i + 1);
			pDC->FillSolidRect(&rectangle, RGB(0, 0, 255 ->MulDiv(i, 252, nHeight)));
		}
	}
}




Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The latest release of SugarCRM's flagship product gives users new tools to build extraordinary customer relationships. Read an in-depth analysis of SugarCRM's enhanced ability to help companies execute their customer-facing initiatives from Ovum, a leading technology research firm.

  • The exponential growth of data, along with virtualization, is bringing a disruptive level of complexity to your IT infrastructure. Having multiple point solutions for data protection is not the answer, as it adds to the chaos and impedes on your ability to deliver consistent SLAs. Read this white paper to learn how a more holistic view of the infrastructure can help you to unify the data protection schemas by properly evaluating your business needs in order to gain a thorough understanding of the applications …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds