フレームを表示

L_PaintRgnDCBufferCallback

フレームを表示

#include "l_bitmap.h"

L_LTDIS_API L_INT L_PaintRgnDCBufferCallbackpCallbackData、pBitmap、pSrc、pClipSrc、pDst、pClipDst、uROP3、pBuffer、nRow、nCount

pPAINTCALLBACKDATA pCallbackData;

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

pBITMAPHANDLE pBitmap;

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

L_RECT * pSrc;

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

L_RECT * pClipSrc;

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

L_RECT * pDst;

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

L_RECT * pClipDst;

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

L_UINT32 uROP3;

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

L_UCHAR * pBuffer;

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

L_INT nRow;

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

L_INT nCount;

/* 描画する段数*/

描画コールバックを用いたバッファからの描画画像データ。この関数はL_PaintDCBufferCallbackと同じに機能しますが、ビットマップリージョンだけは描画されます。

パラメーター

説明

pCallbackData

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

pBitmap

描画するためにリージョンを持っているビットマップを参照文に引用しているビットマップハンドルへのポインター。

pSrc

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

 

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

pClipSrc

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

 

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

pDst

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

 

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

pClipDst

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

 

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

uROP3

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

pBuffer

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

nRow

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

nCount

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

戻り値

SUCCESS

関数は成功しました。

<1

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

コメント

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

それのためにリージョンを作成することができる前に、ビットマップは割り当てられなければなりません。したがって、画像をロードしながら描画する場合にこの関数を使うならば、ビットマップが割り当てられたあと、リージョンを作成するためにコールバック関数を使わなければなりません。

必須のDLLとライブラリ

LTDIS

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

プラットホーム

Win32 x 64

参照

関数:

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

構造体:

PAINTCALLBACKDATA

トピック:

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

 

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

 

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

 

ビットマップリージョンの定義と使用

 

パレット変更の処理

 

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

 

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

サンプル

imageでリージョンを作成して、その後一度にデータある行と描画のためにそれを得ます。

L_INT PaintRgnDCBufferCallbackExample(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 */
   RECT     rcRgn;
   L_INT    x;
   PAINTCALLBACKDATA PaintCallbackData;

   SetRect(&rcRgn, BITMAPWIDTH(pBitmap)*1/4, BITMAPHEIGHT(pBitmap)*1/4,
                   BITMAPWIDTH(pBitmap)*3/4, BITMAPHEIGHT(pBitmap)*3/4);
   L_SetBitmapRgnEllipse(pBitmap, NULL, &rcRgn, L_RGN_SET);

   /* 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_PaintRgnDCBufferCallback(&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;
}