フレームを表示

L_PaintDCBufferCallback

フレームを表示

#include "l_bitmap.h"

L_LTDIS_API L_INT L_PaintDCBufferCallbackpCallbackData、pBitmap、pSrc、pSrcClip、pDest、pDestClip、uROP3、pBuffer、nBufferRow、nNumRows

pPAINTCALLBACKDATA pCallbackData;

/* コールバックデータ構造へのポインター*/

pBITMAPHANDLE pBitmap;

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

L_RECT * pSrc;

/* ディスプレイソース長方形へのポインター*/

L_RECT * pSrcClip;

/* ディスプレイソースクリッピング長方形へのポインター*/

L_RECT * pDest;

/* ディスプレイデスティネーション四角形へのポインター*/

L_RECT * pDestClip;

/* ディスプレイデスティネーションクリッピング長方形へのポインター*/

L_UINT32 uROP3;

/* 表示のためのウィンドウROP code*/

L_UCHAR * pBuffer;

/* ソースバッファへのポインター*/

L_INT nBufferRow;

/* 描画する最初の行*/

L_INT nNumRows;

/* 描画する段数*/

描画コールバックを用いたバッファからの描画画像データ。

パラメーター

説明

pCallbackData

デバイスコンテキスト(DC)と描画コールバックを格納している構造体へのポインタ。デバイスコンテキストのマッピング方式は、MM_TEXTでなければなりません。

pBitmap

描画するためにimageを説明するビットマップハンドルへのポインター。

pSrc

ディスプレイソースとしての使い方にビットマップの部分を指定するWindows RECT構造体へのポインター。

 

RECT構造体の座標は、ビットマップに対する相対座標です。デフォルトを使うためにNULLを渡すことができます。そして、それはビットマップと一致します。

pSrcClip

描画するためにディスプレイソースの部分を指定するWindows RECT構造体へのポインター。通常、ソースビットマップの一部が変更したとき、これが表示を更新するために使われます。

 

RECT構造体の座標は、ビットマップに対する相対座標です。デフォルトを使うためにNULLを渡すことができます。そして、それはビットマップと一致します。

pDest

ソース長方形がどのように拡大縮小されるか、そして、imageがどのようにデバイスコンテキストで配置されるか決定するWindows RECT構造体へのポインター。

 

RECT構造体の座標は、デバイスコンテキストに対する相対座標です。デフォルトが、このパラメーターのためにありません。RECT構造体を指定しなければなりません。

pDestClip

描画するためにディスプレイ長方形の部分を指定するWindows RECT構造体へのポインター。通常、ユーザーが別のウィンドウを移動する場合など、表示面の変更を更新するために使用します。覆い隠された画像の一部が明らかになります。

 

RECT構造体の座標は、デバイスコンテキストに対する相対座標です。デフォルトを使うためにNULLを渡すことができます。そして、それはデバイスコンテキストと一致します。しかし、ほとんどの場合、Windows WM_PAINTメッセージによって返される長方形を使わなければなりません。

uROP3

デスティネーション四角形はどうか決定するWindows ROP codeが、更新しました。このパラメーターは、Windowsビットブリット関数と同じコードをとります。通常の描画のために、SRCCOPYを使います。

pBuffer

描画するために画像データを格納するバッファへのポインター。

nBufferRow

描画する最初の行。任意の行の描画された部分は、RECTパラメータによって制限されるかもしれません。

nNumRows

描画する段数。任意の行の描画された部分は、RECTパラメータによって制限されるかもしれません。pBufferの画像データが圧縮1-ビットデータであるならば、1ビット画像処理の高速化で説明されるように、負の数(-nLines)として行の数を指定することができます。

戻り値

SUCCESS

関数は成功しました。

<1

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

コメント

PAINTCALLBACKDATA構造体で保存されるならば、描画しているHDC。「どのGDI関数をオーバーライドすることができるかに関する詳細のためのそのドキュメンテーション」を参照してください。

この関数はLEADビットマップハンドルを参照文に引用します。そして、それはロードしたビットマップを持っているかもしれないか、持っていないかもしれません。いずれにせよ、以下のフィールドは、BITMAPHANDLE構造体で指定されていなければなりません:

バッファ仕様を除いて、この関数は、L_PaintDCと同じに、ソースとデスティネーション長方形を使います。完了した弁解の根拠により、L_PaintDCを参照します。

ビットマップがロードされる間、imageを描画するためにコールバック関数からL_PaintDCBufferCallbackを呼び出すことができます。この技術が、DEMO.Cプログラム例でFILEREADCALLBACK手順で使われます。

必須のDLLとライブラリ

LTDIS

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

プラットホーム

Win32 x 64

参照

関数:

L_PaintDC, L_WindowLevel, L_RectToBitmap, L_RectFromBitmap, L_PaintDCBufferCallback, L_PaintDCCallback, L_PaintDCCMYKArray, L_PaintDCOverlay, L_PaintDCOverlayCallback, L_PaintRgnDC,  L_PaintRgnDCBuffer, L_PaintRgnDCBufferCallback, L_PaintRgnDCCallback, L_PaintRgnDCEffect

トピック:

ラスター画像は機能します:画像の表示

 

カスタムコールバックを用いた描画

 

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

 

パレット変更の処理

 

ラスター画像は機能します:カスタム描画の使用

 

サポート関数:コールバック

 

カスタムコールバックを用いた描画

サンプル

一度にデータある行を取得して、それを描画します。

L_INT PaintDCBufferExample(L_HWND hWnd, pBITMAPHANDLE pBitmap)
{
   L_INT    nRet=SUCCESS;
   HDC      hdc;                    /* Device context for the current window */
   RECT     rcDest;                 /* Destination rectangle for painting */
   HPALETTE hSavedPalette = NULL;   /* Temporary copy of the current system palette */
   HPALETTE hOurPalette = NULL;     /* The palette that we will use to paint */
   L_INT    x;
   PAINTCALLBACKDATA PaintCallbackData; /* Paint callback data structure */

   /* Get the device context */
   hdc = GetDC (hWnd);
   /* Set the destination rectangle to be the same as the bitmap.
   Other painting rectangles can take defaults. */
   GetClientRect(hWnd, &rcDest);
   /* Create the palette that we will use to paint */
   hOurPalette = L_CreatePaintPalette (hdc, pBitmap);
   /* Select our palette and save the old one */
   hSavedPalette = SelectPalette (hdc, hOurPalette, FALSE);
   /* Realize our palette */
   RealizePalette (hdc); 

   /* Initialize the paint callback data structure */
   memset(&PaintCallbackData, 0, sizeof(PaintCallbackData));
   PaintCallbackData.uStructSize = sizeof(PAINTCALLBACKDATA);
   PaintCallbackData.pDisplay = hdc;

   /* set the paint callbacks for the GDI functions you are overriding here

        PaintCallbackData.pIsCompatibleDC = MyIsCompatibleDC;
        PaintCallbackData.pStretchDIBits = MyStretchDIBits;
        etc
   */

   /* Paint the image */
   L_AccessBitmap(pBitmap);
   for(x=0; x<pBitmap->Height; x++)
   {
      L_UCHAR *pBuf = (L_UCHAR*)malloc(pBitmap->BytesPerLine);
      L_GetBitmapRow(pBitmap, pBuf, x, pBitmap->BytesPerLine);
      nRet = L_PaintDCBufferCallback(&PaintCallbackData, pBitmap, NULL, NULL, &rcDest, NULL, SRCCOPY, pBuf, x, 1);
   }
   L_ReleaseBitmap(pBitmap);

   /* Restore the old palette */
   SelectPalette (hdc, hSavedPalette, FALSE);

   /* Delete the newly created palette */
   DeleteObject (hOurPalette);

   /* Release the device context */
   ReleaseDC(hWnd, hdc);
   return nRet;
}