CodeGuru

My CodeGuru Articles

Playing with ColorMatrix

I have written some articles for the CodeGuru software developers forum, about some classes I created for Windows programmers.

CodeGuru is a huge Internet site geared towards programmers working in Microsoft programming languages like Visual C++ (my language), Visual Basic and Visual C#. It consists of thousands of pages with information, tips and tricks, and example code. Contributions come from all over the world, from professional programmers, hobby programmers and students alike. It’s a very lively community and the general level is high.

CodeGuru is far from unique and it is not even the biggest programmers forum on the Internet. But I tend to prefer it, because the leading articles are thoroughly reviewed by a bunch of very competent peers from all over the world. How I know? Because I’m a CodeGuru reviewer myself.

My Articles

They are mainly about computer graphics and image manipulation. I tend to switch from one subject to the other rather frequently, so that might change. They're also listed on my CodeGuru profile page.

  • Playing with ColorMatrix — You can do great things with ColorMatrix in GDI+. Use the QColorMatrix class to open up the possibilities. You’ll be able to affect gamma, saturation, contrast, brightness, hue, and more. (July 31, 2003. Updated: August 12, 2003)
  • Flicker-Free Drawing Using Bounds Accumulation — Use the versatile QBufferDC class for double-buffered drawing to the screen. (August 15, 2003)
  • Scaling, Rotating, and Shearing with QTransformTracker — This CRectTracker on steroids not only lets you move and scale screen objects, but also rotate and shear them. (August 25, 2003. Updated: September 2, 2005)
  • Weird Warps — GDI+ lets you ‘warp’ graphics objects. At least, that’s the story. In reality, the method is buggy to an unacceptable degree. (September 2, 2003)
  • ‘Rubber Sheeting’ with QWarpTracker — Warping is the most drastic way to change the form of a GDI+ graphics object. The class QWarpTracker lets you do it interactively. (September 9, 2003. Updated: September 1, 2005)
  • Look Closer with QZoomView — Build an extended CScrollView with added zooming capabilities. (October 1, 2003. Updated: October 15, 2003)
  • A Sharp View with QGaussFilter — Despite its somewhat confusing name, Unsharp Mask is an important procedure to enhance the quality of bitmap pictures. The QGaussFilter class performs Unsharp Mask, and more. (October 9, 2003. Updated: February 4, 2004)
  • Image Properties Revealed — Learn everything you always wanted to know about your bitmap pictures, and more, with QImageProperties. (November 4, 2003)
  • Better GIFs ith Octrees — Use adaptive color quantization to create better GIF files with GDI+. (February 6, 2004)
  • Delaunay Triangles — Learn about an algorithm to calculate this intriguing and important data structure in computer graphics. (December 28, 2004. Updated: January 19, 2005)
  • Polygon Clipping — It's one of those humble tasks computers have done for ages, but the hunt for the perfect clipping algorithm is still open. (January 6, 2005)
  • Drawing Curved Objects — Add support for interactive curve drawing to your MFC app by dropping in theQBezierTracker class. (August 9, 2005)
  • QPerformanceTimer — ‘Profile’ a block of C++ code with just one include file and two variable definitions. (August 16, 2005)
  • Make GDI+ Less Finicky About Fonts — Windows GDI+ understands only half of the fonts out there. Use the QGraphicsText class to work with the other half. (September 23, 2005)
  • Let Your Characters Dance and Wiggle — This versatile class arranges the characters of a text string along any curve. (October 24, 2005)
  • Mould Text in Any Shape — Sometimes, putting text in a rectangular block may just be a little too straight. (February 7, 2006)

A programmer started to cuss
Because getting to sleep was a fuss
As he lay there in bed
Looping ’round in his head
was: while(!asleep()) sheep++;

David Jayne