Code sample Home

Load raster image (DIB) from a memory buffer
void DemoLoadImageBitsFromFile (HANDLE hLcWnd)
{
  WCHAR* szName = L"Image3";
  WCHAR* szFileName = L"c:/!OK/Data/Images/Fish.bmp";
  HANDLE hImage, hImgRef, hBlock, hDrw;
  double X, Y, W, H;
  WIN32_FIND_DATAW ffd;
  HANDLE hff;
  FILE*  df;
  UINT   fsize;
  BYTE*  pDataBuf = 0;  // pointer to a DIB in a memory
  bool   bLoaded = false;

  // get file size
  hff = FindFirstFile( szFileName, &ffd );
  if (hff == INVALID_HANDLE_VALUE){
    // the file don't exist
    return;
  }
  fsize = ffd.nFileSizeLow;
  FindClose( hff );

  // allocate memory
  pDataBuf = (BYTE*)malloc( fsize );
  if (pDataBuf){
    df = _wfopen( szFileName, L"rb" );
    if (df){
      // copy file into memory buffer
      if (fread( pDataBuf, fsize, 1, df ) == 1){
        // now the image file is stored in a memory
        bLoaded = true;
      }
      fclose( df );
    }
  }

  if (bLoaded){
    // get drawing and block, linked with CAD window
    hDrw = lcPropGetHandle( hLcWnd, LC_PROP_WND_DRW );
    hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_BLOCK );
	
    // create image from memory buffer data
    hImage = lcDrwAddImage3( hDrw, szName, pDataBuf );
    if (hImage){
      // add first image reference
      X = 30.0;   // left-bottom position of the image reference
      Y = 50.0;
      W = 100.0;  // width of the image reference
      H = 0.0;    // real height will be calculated from the image proportions
      hImgRef = lcBlockAddImageRef( hBlock, hImage, X, Y, W, H, false );
      // update entity's extents
      lcEntUpdate( hImgRef );
      // get height of the image reference
      H = lcPropGetFloat( hImgRef, LC_PROP_ENT_DY );
      // add second image reference
      X = X + (W * 0.75);
      Y = Y + (H * 0.75);
      W = W * 0.5;
      H = 0.0;
      hImgRef = lcBlockAddImageRef( hBlock, hImage, X, Y, W, H, false );
      // view drawing's extents
      lcWndZoomRect( hLcWnd, 0,0,0,0 );
    }
  }
  // free memory
  free( pDataBuf );
}

This will create the following drawing:



See Also:

Create raster image (from a file)
Create raster image (set pixels)
Scale raster image
Resample raster image