フレームを表示

L_PaintDCCallback

フレームを表示

#include "l_bitmap.h"

L_LTDIS_API L_INT L_PaintDCCallbackpCallbackData、pBitmap、pSrc、pSrcClip、pDest、pDestClip、uROP3

pPAINTCALLBACKDATA pCallbackData;

/* 描画コールバックを格納している構造体へのポインター*/

pBITMAPHANDLE pBitmap;

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

L_RECT* pSrc;

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

L_RECT* pSrcClip;

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

L_RECT* pDest;

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

L_RECT* pDestClip;

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

L_UINT32 uROP3;

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

カスタムコールバックを使用して、任意のサイズで、任意のimageを任意のデバイスコンテキスト(画面、プリンターまたはメモリdc)に表示します。ディスプレイの表面がimageより少しの色を持っているならば、それに出力するものは実際の画像データに影響を及ぼして表面を示すこの関数ディザリング。

パラメーター

説明

pCallbackData

デバイスコンテキスト(DC)と描画コールバックを格納している構造体へのポインタ。

pBitmap

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

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を使います。

戻り値

SUCCESS

関数は成功しました。

<1

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

コメント

どのように博士論文長方形を使うかについて、詳細はL_PaintDCのためにドキュメンテーションを参照してください。

描画している専門関数を使っているならば、どのデバイスコンテキストがそれらの関数と互換性を持つかについて確かめるために、それらの関数のドキュメンテーションを参照します。たとえば、8ビット以上/コンポーネントディスプレイによる若干のグラフィックカードは、画面DCs(メモリDCsでない)だけで、機能するかもしれません。

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

必須のDLLとライブラリ

LTDIS

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

プラットホーム

Win32 x 64

参照

関数:

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

トピック:

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

 

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

 

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

 

パレット変更の処理

 

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

 

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

サンプル

完了したサンプルコードについては、バルコディスプレイアダプタに描画する完了したサンプルのために、技術的なLEADTOOLSに連絡してください。このサンプルは、カスタムコールバックを使用してimageを描画するために、必要最小限を示します。

L_INT PaintDCCallbackExample(L_HWND hWnd, pBITMAPHANDLE pBitmap)
{
   L_INT nRet;
   HDC      hdc;                    /* Device context for the current window */
   RECT     rcLeadDest;             /* 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 */
   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. */
   SetRect(&rcLeadDest, 0, 0, BITMAPWIDTH(pBitmap), BITMAPHEIGHT(pBitmap));
   /* 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 */
   nRet = L_PaintDCCallback(&PaintCallbackData, /* Paint Callback structure */
               pBitmap,     /* Bitmap handle */
               NULL,        /* Default source rectangle */
               NULL,        /* Default source clip area */
               &rcLeadDest, /* Destination rectangle */
               NULL,        /* Default destination clipping rectangle */
               SRCCOPY);    /* ROP3 code for a Normal Paint */
   if(nRet != SUCCESS)
      return nRet;

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

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

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