Click here to Skip to main content
Click here to Skip to main content
 
Add your own
alternative version

ImageStone - A Powerful C++ Class Library for Image Manipulation

, 6 Dec 2011 Zlib
An article on a library for image manipulation
imagestonesrc.zip
ImageStone
example
001
src
001.dsp
001.dsw
Makefile
002
src
002.dsp
002.dsw
002.ico
bk.tga
small.ico
003
src
003.dsp
003.dsw
003.ico
rgn.TGA
small.ico
004
src
004.dsp
004.dsw
005
src
005.dsp
005.dsw
Makefile
006
src
006.dsp
006.dsw
Makefile
007
src
007.dsp
007.dsw
Makefile
008
src
008.dsp
008.dsw
res
008.exe.manifest
008.ico
008Doc.ico
arc_grad.bmp
tex_canvas.BMP
Toolbar.bmp
009
src
009.dsp
009.dsw
009.ico
pattern.jpg
small.ico
010
src
010.dsp
010.dsw
010.plg
res
010.ico
include
command
imagefile
pixelprocessor
lib
FreeImage
Dist
Source
gdiplus
Include
lib
imagestone_chm.zip
doc.chm
imagestone_demo.zip
002_vs2005.exe
imagestone_demo008.zip
008.exe
imagestone_demo_008.zip
008.exe
imagestone_docchm.zip
Help.chm
imagestone_doc_chm.zip
index.chm
imagestone_doc_html.zip
doc_html
doxygen.png
class_f_c_image_handle.png
class_f_c_image_handle___bmp.png
class_f_c_image_handle___free_image.png
class_f_c_image_handle___gdiplus.png
class_f_c_image_handle___i_picture.png
class_f_c_image_handle___tga.png
class_f_c_image_handle_base.png
class_f_c_image_handle_factory.png
class_f_c_image_handle_factory___i_picture.png
class_f_c_image_handle_factory___mini.png
class_f_c_interface___pixel_process.png
class_f_c_object.png
class_f_c_obj_graph.png
class_f_c_obj_image.png
class_f_c_obj_multi_frame.png
class_f_c_pixel3_d_grid.png
class_f_c_pixel_add_random_noise.png
class_f_c_pixel_adjust_r_g_b.png
class_f_c_pixel_auto_color_enhance.png
class_f_c_pixel_auto_contrast.png
class_f_c_pixel_bilinear_distord.png
class_f_c_pixel_blinds.png
class_f_c_pixel_brightness.png
class_f_c_pixel_color_balance.png
class_f_c_pixel_color_level.png
class_f_c_pixel_colors_count.png
class_f_c_pixel_color_tone.png
class_f_c_pixel_combine_channel___r_g_b.png
class_f_c_pixel_contrast.png
class_f_c_pixel_convert_quantize.png
class_f_c_pixel_convert_to16_bit.png
class_f_c_pixel_convert_to8_bit_gray.png
class_f_c_pixel_convolute.png
class_f_c_pixel_cylinder.png
class_f_c_pixel_deinterlace.png
class_f_c_pixel_detect_edges.png
class_f_c_pixel_emboss.png
class_f_c_pixel_export_asc_i_i.png
class_f_c_pixel_fill3_d_solid_frame.png
class_f_c_pixel_fill_color.png
class_f_c_pixel_fill_grid.png
class_f_c_pixel_flip.png
class_f_c_pixel_fractal_trace.png
class_f_c_pixel_gamma.png
class_f_c_pixel_gaussian_blur3x3.png
class_f_c_pixel_gaussian_blur5x5.png
class_f_c_pixel_get_key_color.png
class_f_c_pixel_gradient_base.png
class_f_c_pixel_gradient_bi_line.png
class_f_c_pixel_gradient_conical_a_sym.png
class_f_c_pixel_gradient_conical_sym.png
class_f_c_pixel_gradient_line.png
class_f_c_pixel_gradient_radial.png
class_f_c_pixel_gradient_rect.png
class_f_c_pixel_grayscale.png
class_f_c_pixel_halftone_m3.png
class_f_c_pixel_hue_saturation.png
class_f_c_pixel_illusion.png
class_f_c_pixel_invert.png
class_f_c_pixel_lens.png
class_f_c_pixel_l_u_t_routine.png
class_f_c_pixel_median_filter.png
class_f_c_pixel_mirror.png
class_f_c_pixel_mosaic.png
class_f_c_pixel_noisify.png
class_f_c_pixel_oil_paint.png
class_f_c_pixel_perspective.png
class_f_c_pixel_posterize.png
class_f_c_pixel_ribbon.png
class_f_c_pixel_ripple.png
class_f_c_pixel_rotate.png
class_f_c_pixel_rotate270.png
class_f_c_pixel_rotate90.png
class_f_c_pixel_sharp.png
class_f_c_pixel_shift.png
class_f_c_pixel_skew.png
class_f_c_pixel_small_tile.png
class_f_c_pixel_solarize.png
class_f_c_pixel_splash.png
class_f_c_pixel_splite_channel___r_g_b.png
class_f_c_pixel_threshold.png
class_f_c_pixel_video.png
class_f_c_pixel_wave.png
class_f_c_pixel_whirl_pinch.png
class_f_c_single_pixel_process_base.png
imagestone_src.zip
image_stone
doc
doc.rar
Doxyfile
example
001
Makefile
Readme_MinGW
002
dlg_effect_blinds.inl
dlg_effect_color_balance.inl
dlg_effect_color_level.inl
dlg_effect_color_tone.inl
dlg_effect_custom.inl
dlg_effect_fillgrid.inl
dlg_effect_lensflare.inl
dlg_effect_supernova.inl
dlg_image_size.inl
res
002.ico
002Doc.ico
bar_top.png
example.jpg
lang.ini
menu_icon
adjustrgb.png
brightness_contrast.png
color_balance.png
color_level.png
color_tone.png
effect_fillgrid.png
effect_invert.png
effect_lensflare.png
effect_oil.png
effect_pencil.png
effect_splash.png
effect_supernova.png
effect_twist.png
flip.png
grayscale.png
hue_saturation.png
mirror.png
open.png
print.png
quit.png
resize.png
rotate270.png
rotate90.png
save_as.png
smooth_edge.png
to_ascii.png
shadow.png
tex_bricks.png
tex_canvas_1.png
tex_canvas_2.png
tex_dot.png
tex_grid.png
tex_leather.png
tex_mat.png
tex_sandstone.png
tex_weave.png
uistone
include
effect
image_codec
image_effect.inl
image_property.inl
image_resize_filter.inl
image_win.inl
linux_define.inl
post_implement.inl
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ImageStone: ImageHandle_Gdiplus.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div>
<h1>ImageHandle_Gdiplus.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
00002 <span class="comment"> *   Copyright (C) =USTC= Fu Li</span>
00003 <span class="comment"> *</span>
00004 <span class="comment"> *   Author   :  Fu Li</span>
00005 <span class="comment"> *   Create   :  2004-6-18</span>
00006 <span class="comment"> *   Home     :  http://www.crazy-bit.com/</span>
00007 <span class="comment"> *   Mail     :  crazybit@263.net</span>
00008 <span class="comment"> *   History  :  </span>
00009 <span class="comment">*/</span>
00010 <span class="preprocessor">#ifndef __PCL_IMAGE_HANDLE_GDIPLUS__2004_06_18__H__</span>
00011 <span class="preprocessor"></span><span class="preprocessor">#define __PCL_IMAGE_HANDLE_GDIPLUS__2004_06_18__H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#include "ImageHandleBase.h"</span>
00013 <span class="preprocessor">#include "../oxo_helper.h"</span>
00014 
00015 <span class="comment">//class FCImageHandle ;</span>
00016     <span class="keyword">class </span><a class="code" href="class_f_c_image_handle___gdiplus.html">FCImageHandle_Gdiplus</a> ;
00017 
00018 <span class="comment">//=============================================================================</span>
<a name="l00022"></a><a class="code" href="class_f_c_image_handle___gdiplus.html">00022</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_f_c_image_handle___gdiplus.html">FCImageHandle_Gdiplus</a> : <span class="keyword">public</span> <a class="code" href="class_f_c_image_handle.html">FCImageHandle</a>
00023 {
00024     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_image_handle_base.html#a0">LoadImageFile</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName) ;
00025     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_image_handle_base.html#a1">LoadImageMemory</a> (<span class="keyword">const</span> BYTE* pStart, <span class="keywordtype">int</span> nFileSize) ;
00026     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_image_handle_base.html#a2">SaveImage</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <span class="keywordtype">int</span> nFlag = -1) ;
00027 
00028     <span class="keywordtype">bool</span> __pcl_StoreGdiplusObject (<a class="code" href="class_f_c_image_handle.html">FCImageHandle</a>* pHandler, Gdiplus::Bitmap* gp_Bmp) ;
00029     <span class="keywordtype">bool</span> __pcl_GetEncoderClsid (<span class="keyword">const</span> WCHAR* szFormat, CLSID* pClsid) ;
00030 <span class="keyword">public</span>:
00031     <a class="code" href="class_f_c_image_handle___gdiplus.html">FCImageHandle_Gdiplus</a>()
00032     {
00033         Gdiplus::GdiplusStartupInput   gpStartupInput ;
00034         Gdiplus::GdiplusStartup (&amp;m_GdiplusToken, &amp;gpStartupInput, NULL) ;
00035     }
00036     <span class="keyword">virtual</span> ~<a class="code" href="class_f_c_image_handle___gdiplus.html">FCImageHandle_Gdiplus</a>()
00037     {
00038         Gdiplus::GdiplusShutdown (m_GdiplusToken) ;
00039     }
00040 <span class="keyword">private</span>:
00041     ULONG_PTR   m_GdiplusToken ;
00042 } ;
00043 
00044 <span class="comment">//=============================================================================</span>
00045 <span class="comment">// inline Implement</span>
00046 <span class="comment">//=============================================================================</span>
00047 <span class="keyword">inline</span> <span class="keywordtype">bool</span> FCImageHandle_Gdiplus::__pcl_StoreGdiplusObject (<a class="code" href="class_f_c_image_handle.html">FCImageHandle</a>* pHandler, Gdiplus::Bitmap* gp_Bmp)
00048 {
00049     <span class="keywordflow">if</span> (!gp_Bmp || (gp_Bmp-&gt;GetLastStatus() != Gdiplus::Ok))
00050     {
00051         assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="keyword">false</span>;
00052     }
00053 
00054     <span class="comment">// get image's info</span>
00055     BOOL      bInitAlpha = FALSE ;
00056     BYTE              __bufImgInfo[<span class="keyword">sizeof</span>(BITMAPINFOHEADER) + 16] = {0} ;
00057     BITMAPINFOHEADER  * pInfo = (BITMAPINFOHEADER*)__bufImgInfo ;
00058     DWORD             * pMask = (DWORD*)(pInfo + 1) ;
00059     pInfo-&gt;biWidth = gp_Bmp-&gt;GetWidth() ;
00060     pInfo-&gt;biHeight = gp_Bmp-&gt;GetHeight() ;
00061     pInfo-&gt;biCompression = BI_RGB ;
00062     <span class="keywordflow">switch</span> (gp_Bmp-&gt;GetPixelFormat())
00063     {
00064         <span class="keywordflow">case</span> PixelFormat1bppIndexed : pInfo-&gt;biBitCount = 1 ; break ;
00065         <span class="keywordflow">case</span> PixelFormat4bppIndexed : pInfo-&gt;biBitCount = 4 ; break ;
00066         <span class="keywordflow">case</span> PixelFormat8bppIndexed : pInfo-&gt;biBitCount = 8 ; break ;
00067         <span class="keywordflow">case</span> PixelFormat16bppRGB555 :
00068         <span class="keywordflow">case</span> PixelFormat16bppARGB1555 :
00069             pInfo-&gt;biBitCount = 16 ;
00070             pInfo-&gt;biCompression = BI_BITFIELDS ;
00071             pMask[0] = MASK16_RED_555 ;
00072             pMask[1] = MASK16_GREEN_555 ;
00073             pMask[2] = MASK16_BLUE_555 ;
00074             break ;
00075         <span class="keywordflow">case</span> PixelFormat16bppRGB565 :
00076             pInfo-&gt;biBitCount = 16 ;
00077             pInfo-&gt;biCompression = BI_BITFIELDS ;
00078             pMask[0] = MASK16_RED_565 ;
00079             pMask[1] = MASK16_GREEN_565 ;
00080             pMask[2] = MASK16_BLUE_565 ;
00081             break ;
00082         <span class="keywordflow">case</span> PixelFormat32bppRGB :
00083             pInfo-&gt;biBitCount = 32 ; <span class="comment">// no alpha channel, fill 0xFF</span>
00084             bInitAlpha = TRUE ;
00085             break ;
00086         <span class="keywordflow">case</span> PixelFormat24bppRGB : pInfo-&gt;biBitCount = 24 ; break ;
00087         <span class="keywordflow">case</span> PixelFormat32bppPARGB :
00088         <span class="keywordflow">case</span> PixelFormat32bppARGB : pInfo-&gt;biBitCount = 32 ; break ;
00089         <span class="keywordflow">default</span> :
00090             <span class="keywordflow">return</span> false ;
00091     }
00092 
00093     <span class="comment">// create image</span>
00094     <a class="code" href="class_f_c_obj_image.html">FCObjImage</a>   * pImg = <span class="keyword">new</span> <a class="code" href="class_f_c_obj_image.html">FCObjImage</a> ;
00095     <span class="keywordflow">if</span> (!pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z27_0">Create</a>(pInfo))
00096     {
00097         <span class="keyword">delete</span> pImg; <span class="keywordflow">return</span> false ;
00098     }
00099 
00100     <span class="comment">// set palette</span>
00101     <span class="keywordflow">if</span> (pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z29_6">ColorBits</a>() &lt;= 8)
00102     {
00103         <span class="keyword">const</span> <span class="keywordtype">int</span>     nPalSize = gp_Bmp-&gt;GetPaletteSize() ;
00104         <a class="code" href="class_p_c_l__array.html">PCL_array&lt;Gdiplus::ColorPalette&gt;</a>   pPal (<span class="keyword">new</span> BYTE[nPalSize]) ;
00105         gp_Bmp-&gt;GetPalette (pPal.get(), nPalSize) ;
00106         pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z33_1">SetColorTable</a> (0, pPal.get()-&gt;Count, (RGBQUAD*)&amp;pPal.get()-&gt;Entries[0]) ;
00107     }
00108 
00109     <span class="comment">// set pixel</span>
00110     Gdiplus::Rect         rcLock (0, 0, pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z29_4">Width</a>(), pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z29_5">Height</a>()) ;
00111     Gdiplus::BitmapData   BmpData ;
00112 
00113 <span class="preprocessor">    #if _MSC_VER &gt; 1200 // VC7</span>
00114 <span class="preprocessor"></span>        gp_Bmp-&gt;LockBits (&amp;rcLock, Gdiplus::ImageLockModeRead, gp_Bmp-&gt;GetPixelFormat(), &amp;BmpData) ;
00115 <span class="preprocessor">    #else</span>
00116 <span class="preprocessor"></span>        gp_Bmp-&gt;LockBits (rcLock, Gdiplus::ImageLockModeRead, gp_Bmp-&gt;GetPixelFormat(), &amp;BmpData) ;
00117 <span class="preprocessor">    #endif</span>
00118 <span class="preprocessor"></span>
00119     <span class="keyword">const</span> BYTE     * pixels = (BYTE*)BmpData.Scan0 ;
00120     <span class="keyword">const</span> <span class="keywordtype">int</span>      nPitch = FMin (pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z29_7">GetPitch</a>(), BmpData.Stride) ;
00121     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0 ; y &lt; pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z29_5">Height</a>() ; y++)
00122     {
00123         CopyMemory (pImg-&gt;<a class="code" href="class_f_c_obj_image.html#z29_1">GetBits</a>(y), &amp;pixels[y * BmpData.Stride], nPitch) ;
00124     }
00125     gp_Bmp-&gt;UnlockBits (&amp;BmpData) ;
00126 
00127     <span class="comment">// over</span>
00128     <span class="keywordflow">if</span> (bInitAlpha)
00129         pImg-&gt;SetAlphaChannelValue(0xFF) ;
00130     pHandler-&gt;PCL_PushObject (pImg) ; <span class="comment">// pImg's ownership</span>
00131     return true ;
00132 }
00133 <span class="comment">//-----------------------------------------------------------------------------</span>
00134 inline <span class="keywordtype">bool</span> <a class="code" href="class_f_c_image_handle___gdiplus.html">FCImageHandle_Gdiplus</a>::LoadImageFile (const <span class="keywordtype">char</span>* szFileName)
00135 {
00136     <span class="comment">// load image file</span>
00137     <span class="keywordtype">bool</span>             bRet = false ;
00138     Gdiplus::Bitmap  * gp_Bmp = Gdiplus::Bitmap::FromFile(_bstr_t(szFileName)) ; <span class="comment">// ASCII --&gt; UNICODE</span>
00139     <span class="keywordflow">if</span> (gp_Bmp)
00140     {
00141         bRet = __pcl_StoreGdiplusObject (<span class="keyword">this</span>, gp_Bmp) ;
00142         <span class="keyword">delete</span> gp_Bmp ;
00143     }
00144     <span class="keywordflow">return</span> bRet ;
00145 }
00146 <span class="comment">//-----------------------------------------------------------------------------</span>
00147 <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_image_handle_base.html#a1">FCImageHandle_Gdiplus::LoadImageMemory</a> (<span class="keyword">const</span> BYTE* pStart, <span class="keywordtype">int</span> nFileSize)
00148 {
00149     <span class="keywordflow">if</span> (!pStart || (nFileSize &lt;= 0))
00150     {
00151         assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="keyword">false</span>;
00152     }
00153 
00154     <span class="keywordtype">bool</span>      bRet = false ;
00155     HGLOBAL   hBuffer = ::GlobalAlloc (GMEM_MOVEABLE, nFileSize) ;
00156 
00157     <span class="comment">// copy to HGLOBAL then load</span>
00158     ::CopyMemory (::GlobalLock(hBuffer), pStart, nFileSize) ;
00159     ::GlobalUnlock (hBuffer) ;
00160 
00161     IStream     * pStream = NULL ;
00162     <span class="keywordflow">if</span> (::CreateStreamOnHGlobal (hBuffer, TRUE, &amp;pStream) == S_OK)
00163     {
00164         Gdiplus::Bitmap   * gp_Bmp = Gdiplus::Bitmap::FromStream(pStream) ;
00165         <span class="keywordflow">if</span> (gp_Bmp)
00166         {
00167             bRet = __pcl_StoreGdiplusObject (<span class="keyword">this</span>, gp_Bmp) ;
00168             <span class="keyword">delete</span> gp_Bmp ;
00169         }
00170         pStream-&gt;Release() ;
00171     }
00172     <span class="keywordflow">return</span> bRet ;
00173 }
00174 <span class="comment">//-----------------------------------------------------------------------------</span>
00175 <span class="keyword">inline</span> <span class="keywordtype">bool</span> FCImageHandle_Gdiplus::__pcl_GetEncoderClsid (<span class="keyword">const</span> WCHAR* szFormat, CLSID* pClsid)
00176 {
00177     UINT     nNum=0, nSize=0 ;
00178     Gdiplus::GetImageEncodersSize (&amp;nNum, &amp;nSize) ;
00179     <span class="keywordflow">if</span> (nSize &lt;= 0)
00180         return false ;
00181 
00182     <a class="code" href="class_p_c_l__array.html">PCL_array</a>&lt;Gdiplus::ImageCodecInfo&gt;   pICI (new BYTE[nSize]) ;
00183     Gdiplus::GetImageEncoders (nNum, nSize, pICI.get()) ;
00184 
00185     for (UINT i=0 ; i &lt; nNum; i++)
00186     {
00187         <span class="keywordflow">if</span> (wcscmp(pICI[i].MimeType, szFormat) == 0)
00188         {
00189             *pClsid = pICI[i].Clsid ;
00190             <span class="keywordflow">return</span> true ;
00191         }    
00192     }
00193     <span class="keywordflow">return</span> false ;
00194 }
00195 <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_image_handle_base.html#a2">FCImageHandle_Gdiplus::SaveImage</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <span class="keywordtype">int</span> nFlag)
00196 {
00197     <span class="keywordflow">if</span> (<a class="code" href="class_f_c_image_handle_base.html#p0">m_SaveImg</a>.empty() || !<a class="code" href="class_f_c_image_handle_base.html#p0">m_SaveImg</a>[0]-&gt;IsValidImage())
00198         <span class="keywordflow">return</span> false ;
00199     <span class="keyword">const</span> <a class="code" href="class_f_c_obj_image.html">FCObjImage</a>   &amp;img = *<a class="code" href="class_f_c_image_handle_base.html#p0">m_SaveImg</a>[0] ;
00200 
00201     <span class="comment">// get encoder's CLSID</span>
00202     CLSID      imgClsid ;
00203     bstr_t     strType ;
00204     <span class="keywordflow">switch</span> (FCOXOHelper::GetImageTypeFromName(szFileName))
00205     {
00206         <span class="keywordflow">case</span> IMG_BMP : strType = <span class="stringliteral">"image/bmp"</span>  ; <span class="keywordflow">break</span>;
00207         <span class="keywordflow">case</span> IMG_JPG : strType = <span class="stringliteral">"image/jpeg"</span> ; <span class="keywordflow">break</span>;
00208         <span class="keywordflow">case</span> IMG_GIF : strType = <span class="stringliteral">"image/gif"</span>  ; <span class="keywordflow">break</span>;
00209         <span class="keywordflow">case</span> IMG_TIF : strType = <span class="stringliteral">"image/tiff"</span> ; <span class="keywordflow">break</span>;
00210         <span class="keywordflow">case</span> IMG_PNG : strType = <span class="stringliteral">"image/png"</span>  ; <span class="keywordflow">break</span>;
00211         <span class="keywordflow">default</span> : <span class="keywordflow">return</span> false ;
00212     }
00213     __pcl_GetEncoderClsid (strType, &amp;imgClsid) ;
00214 
00215     <span class="comment">// create a GDI+ bitmap to save</span>
00216     <a class="code" href="class_p_c_l__array.html">PCL_array&lt;BITMAPINFO&gt;</a>   bmfh (img.<a class="code" href="class_f_c_obj_image.html#z29_8">NewImgInfoWithPalette</a>()) ;
00217     Gdiplus::Bitmap         gpBmp (bmfh.get(), img.<a class="code" href="class_f_c_obj_image.html#z29_3">GetMemStart</a>()) ;
00218     <span class="keywordflow">return</span> (gpBmp.Save (bstr_t(szFileName), &amp;imgClsid, NULL) == Gdiplus::Ok) ;
00219 }
00220 
00221 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 8 11:12:46 2006 for ImageStone by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.1 </small></address>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The zlib/libpng License

Share

About the Author

crazybit
Team Leader PhoXo
China China
graduate from University of Science and Technology of China at 2002.
 
Now I work at www.phoxo.com.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.141216.1 | Last Updated 6 Dec 2011
Article Copyright 2006 by crazybit
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid