フレームを表示

L_WindowLevel

フレームを表示

#include "l_bitmap.h"

L_LTDIS_API L_INT L_WindowLevelpBitmap、nLowBit、nHighBit、pLUT、ulLUTLength、uFlags

pBITMAPHANDLE pBitmap;

/* ビットマップハンドルへのポインター*/

L_INT nLowBit;

/* 使う低位ビット*/

L_INT nHighBit;

/* 使う高位ビット*/

L_RGBQUAD* pLUT;

/* ルックアップテーブル*/

L_UINT ulLUTLength;

/* 多くのエントリ*/

L_UINT uFlags;

/* フラグ*/

描画または描画と画像処理のウィンドウ水準測定オプションの上のセットは、特定のビットマップのために機能します。

パラメーター

説明

pBitmap

レベル調整されるビットマップを参照文に引用しているビットマップハンドルへのポインター。

nLowBit

レベリングのために使われる低位ビットを示している値。0の≦nLowBit≦nHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。

nHighBit

レベリングのために使われる高位ビットを示している値。0の≦nLowBit≦nHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。

pLUT

ユーザー定義の変換を実装する場合に使用する、オプションのルックアップテーブル。0~2が乗に発生した明度値ごとに(nHighBit ― nLowBit + 1)-1、RGBクアッドを格納するルックアップテーブルの対応するエントリが、なければなりません。pLUTがNULLであるならば、変換は通常のシフト(右であるか左の)です、そして、描画されたビットマップは8ビットグレースケールです。pLUTがNULLでないならば、描画されたビットマップは24ビットビットマップです。

ulLUTLength

エントリの数を示している値は、pLUTによってをポイントしました。pLUTがNULLであるならば、これをNULLにも設定します。

uFlags

pLUTが描画と画像処理関数によって、または、描画関数だけによって使われるかどうか示している値。設定可能な値は、以下の通りです。

 

意味

 

WINDOWLEVEL_PAINT

[0x00]、pLUTが描画関数だけによって使われます。

 

WINDOWLEVEL_PAINT_AND_PROCESSING

[0x01]、pLUTが描画とimage処理ルーチンのために使われます。

戻り値

SUCCESS

関数は成功しました。

<1

エラーが発生しました。リターンコードを参照してください

コメント

「オンデマンドで」描画のためのウィンドウ-レベリングが機能して、画像データを変えないと定めます。ウィンドウレベル調整を行ったビットマップに画像データを変換するために、L_WindowLevelBitmapを使います。

この関数はL_WindowLevelExtと類似していますが、それはコンポーネントLUTにつき16ビットの代わりに8ビット処方コンポーネントLUTを使います。16ビットLUTは8ビットLUTより多くの精度を提供するので、L_WindowLevelの代わりにL_WindowLevelExtを使うことはより良好です。

16ビットと8ビットLUTは同期します、そしてそれは、LUTがL_WindowLevelExtによって適用した手段はL_WindowLevelで適用されるLUTを変更します、そして、逆もまた同じ。

WINDOW_LEVEL_PAINT_PROCESSINGが指定されるならば、すべての画像処理関数はpLUTを考慮に入れます。

BITMAPHANDLEは、pLUT、PaintHighBitとPaintLowBitを含む内部使用を目的とするその構造体で、若干のメンバを持っています。これらのメンバは、ウィンドウ-レベリングとき、役に立ちます。これらのメンバの詳細については、「BITMAPHANDLE LUTとそのUses トピック」を参照してください。BITMAPHANDLE構造体に関する詳細な情報はLTKRN.Hヘッダファイルで見つかります。そして、それは構造体全体を説明します。

ウィンドウレベル調整を行ったであった保存しているビットマップに関する情報については、「保存しているウィンドウレベル調整を行ったビットマップ」を参照してください。

必須のDLLとライブラリ

LTDIS

ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください

プラットホーム

Win32、x64、Linux

参照

関数:

L_WindowLevelExt, L_WindowLevelBitmap, L_WindowLevelBitmapExt, L_PaintDC, L_PaintDCBuffer, L_PaintDCEffect, L_PaintRgnDC, L_WindowLevelFillLUT, L_SelectBitmapData, L_ShiftBitmapData, L_AutoZoneBitmap

トピック:

ラスター画像は機能します:パレット

 

ラスター画像は機能します:表示と印刷

 

カラーハーフトーンとハーフトーン画像

 

グレースケールイメージ

 

ウィンドウレベル調整ビットマップの保存

 

ラスター画像は機能します:画像の処理

BITMAPHANDLE LUTとその用途

サンプル

このサンプルは、カスタムパレットでビットマップを描画して、処理するために、ウィンドウレベル値を設定します。

L_INT WindowLevelExample(pBITMAPHANDLE pBitmap)
{
   L_INT nRet;
   L_UINT32 x;
   RGBQUAD* ptmp;
   RGBQUAD* pLUT;
   L_INT    nLowBit;
   L_INT    nHighBit;
   L_INT    nLow;
   L_INT    nHigh;
   L_UINT32 nSize;

   /* Change the bitmap to 16-bit grayscale */
   nRet = L_GrayScaleBitmap(pBitmap, 16 );
   if(nRet != SUCCESS)
      return nRet;

   nRet = L_GetMinMaxBits(pBitmap, &nLowBit, &nHighBit, 0);
   if(nRet != SUCCESS)
      return nRet;
   nRet = L_GetMinMaxVal(pBitmap, &nLow, &nHigh, 0);
   if(nRet != SUCCESS)
      return nRet;

   nSize = (L_UINT32)(1L<<(pBitmap->HighBit - pBitmap->LowBit + 1));
   pLUT = (RGBQUAD *)GlobalAllocPtr(GHND, nSize * sizeof(RGBQUAD));    

   ptmp = pLUT;
   /* fill the first half of the LUT with RED */
   for(x=0;x<nSize/2;x++)
   {
      ptmp->rgbRed       = 255;
      ptmp->rgbGreen     = 0;
      ptmp->rgbBlue      = 0;
      ptmp->rgbReserved  = 0;
      ptmp++;
   }
   /* fill the rest with gray values */
   for(x=nSize/2;x<nSize;x++)
   {
      ptmp->rgbRed       = ((L_UCHAR) ((L_UINT32) (x - nLow) * 255 / (nHigh - nLow)));
      ptmp->rgbGreen     = ptmp->rgbRed;
      ptmp->rgbBlue      = ptmp->rgbGreen;
      ptmp->rgbReserved  = 0;
      ptmp++;
   }

   nRet = L_WindowLevel ( pBitmap, nLowBit, nHighBit,
      (RGBQUAD *)pLUT, nSize, WINDOWLEVEL_PAINT_AND_PROCESSING );
   if(nRet != SUCCESS)
      return nRet;

   GlobalFreePtr(pLUT);
   return SUCCESS;
}
参照