FILE: Using HALFTONE Stretching with COLORADJUSTMENT

Last reviewed: May 21, 1997
Article ID: Q168743
The information in this article applies to:
  • Microsoft Win32 Application Programming Interface (API) included with: - Windows NT, versions 3.5, 3.51, 4.0 - Windows 95

SUMMARY

This sample demonstrates how to use the HALFTONE stretch mode and some of the effects that can be generated by using it.

The following file is available for download from the Microsoft Software Library:

 ~ Halftone.exe (size: 57103 bytes) 

For more information about downloading files from the Microsoft Software Library, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q119591
   TITLE     : How to Obtain Microsoft Support Files from Online Services

The following files are a contained in Halftone.exe:
  • Palette.h Palette.C - Contains all of the functions relating to creating and
                    manipulating Windows palettes.
    
    
  • DIB.h
       DIB.c      - Contains all of the code for loading and converting DIBs
                    and DDBs.
    
    
  • HALFTONE.h HALFTONE.c - Contains the UI and the code demonstrating halftone
                    stretching and COLORADJUSTMENT.
    
    

MORE INFORMATION

In many cases it is necessary to display bitmaps or DIBs that have a greater bit depth than your current display mode. To account for this, GDI has to remap the colors your bitmap uses into the colors that are available. This remapping process can be slow and often produces unsatisfactory results. A simple way to produce high quality representations of your original image is to ask GDI to dither the image into the palette selected into the target DC. To get GDI to dither the image you need to use the SetStretchBltMode() API and specify the target DC and the HALFTONE flag. Now, when you want to display your bitmap into the target DC, all you have to do is use StretchBlt() or StretchDIBits() rather than BitBlt() or SetDIBits(). For example:

   SetStretchBltMode(hdcTarget, HALFTONE);
   StretchBlt(hdcTarget, 0,0,dwWidth,dwHeight,
                   hdcSource, 0,0,dwWidth,dwHeight, SRCCOPY);

When you use the HALFTONE stretch mode, it is possible to apply a filter that alters the way GDI processes the color information from the source image. This makes it possible to not only lighten or darken the image but also apply more complex image filters. To specify a filter you use the SetColorAdjustment() API and pass it the target DC and a pointer to a COLORADJUSTMENT record. The COLORADJUSTMENT structure defines the color adjustment values used by the StretchBlt() and StretchDIBits() functions when the stretch mode is HALFTONE. For example:

   SetColorAdjustment(hdcTarget, &caFilter);

After you build the sample, run it, and then load a .bmp file. Once the file is loaded, you can use "adjust the halftone properties" and see the effects on the bitmap.


Keywords : GdiBmp GdiDc kbprg
Version : 3.5 3.51 4.0
Resolution Type : kbfile


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: May 21, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.