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

  • Live Event Date: December 11, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Market pressures to move more quickly and develop innovative applications are forcing organizations to rethink how they develop and release applications. The combination of public clouds and physical back-end infrastructures are a means to get applications out faster. However, these hybrid solutions complicate DevOps adoption, with application delivery pipelines that span across complex hybrid cloud and non-cloud environments. Check out this …

  • On-demand Event Event Date: October 29, 2014 It's well understood how critical version control is for code. However, its importance to DevOps isn't always recognized. The 2014 DevOps Survey of Practice shows that one of the key predictors of DevOps success is putting all production environment artifacts into version control. In this webcast, Gene Kim discusses these survey findings and shares woeful tales of artifact management gone wrong! Gene also shares examples of how high-performing DevOps …

Most Popular Programming Stories

More for Developers

RSS Feeds