トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Win32API
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ Bitmap


    DDB : DeviceDependentBitmap   : Device に依存する Bitmap
    DIB : DeviceIndependentBitmap : Device に依存しない Bitmap


  


  POINT
    現在の OS では 違いを意識する必要はない.
    file に保存する場合はDIB


  WARNING
    Bitmap を描画するには MemoryDevice 間を Copy しないとだめ


  if ( msg == WM_CREATE )
  {
    HANDLE hBmp;

    // ファイルからロード
    hBmp = (HBITMAP)LoadImage( 0, "test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE  );

    // リソースからロード
    HINSTANCE hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE );
    hBmp = (HBITMAP)LoadImage( hInst, MAKEINTRESOURCE( ID_BMP_0 ), IMAGE_BITMAP, 0, 0, 0  );


    // 現在の Device と同じ Format の MemoryDeviceContext( Memory 上の領域 ) を作成
    // [ BackBuffer ] のこと

    hDCBmp = CreateCompatibleDC( NULL );

    // Bitmap Data を設定
    SelectObject( hDCBmp, hBmp );

    return 0;
  }

  if ( msg == WM_PAINT )
  {

    // BackBuffer から FrontBuffer へ Copy
    HDC hDC = GetDC( hWnd );
    BitBlt( hDC, 0, 0, 64, 64, hDCBmp, 0, 0, SRCCOPY );

    return 0;
  }

   CreateCompatibleDC( 0 ); // NULL 指定では  1*1 monoclome

    BMP を Load しないで work を作成する場合は,
    HBITMAP CreateCompatibleBitmap( HDC, w, h );

POINT 解放・削除の処理には注意が必要 特にDeleteDC(), ReleaseDC()の使い分けには注意 「Create〜」で始まる関数で「作成」したら「Delete〜」で「削除」 「Get〜」で「取得」 したら、「Release〜」で「解放」
___

■ CreateCompatibleBitmap

SYNTAX HBITMAP CreateCompatibleBitmap( HDC hCD, // デバイスコンテキストのハンドル int w, h // ビットマップの幅, 高さ ( ピクセル単位 ) ); DESC デバイスコンテキストに関連付けられているデバイスと互換性のあるビットマップを作成 作成されるビットマップの色形式は hdc パラメータで指定したデバイスの色形式と同じになる このビットマップは 元のデバイスと互換性のあるどの メモリデバイスコンテキストでも選択できる。 メモリデバイスコンテキストでは カラーとモノクロのどちらのビットマップも利用できるので 指定されたデバイスコンテキストがメモリデバイスコンテキストであった場合と それ以外の場合では CreateCompatibleBitmap() が返すビットマップの形式は異なる。 メモリデバイスコンテキスト以外のデバイスコンテキスト用に作成された互換ビットマップは常に 指定されたデバイスコンテキストと同じ色形式、同じカラーパレットを使う。 w, h を 0 を指定した場合は 1 × 1 のモノクロビットマップが作成される。 WARNING CreateCompatibleDC() でメモリデバイスコンテキストを作成すると 最初は 1×1 モノクロームのビットマップが選択されている。 カラーのビットマップを作成するには そのメモリデバイスコンテキストを作成するために使われた hDC を指定すること

    // Memory DC は最初は 1*1 の BMP をもつ
    HDC hDCMem = CreateCompatibleDC (hDC);

    // hDCMem ではなく、生成元の hDC を指定することでカラー構成のビットマップを作成する。
    HBITMAP memBM = CreateCompatibleBitmap (hDC, w, h );

    // DC に指定する
    SelectObject ( hDCMem, memBM);
___

■ LoadImage

SYNTAX HANDLE LoadImage( HINSTANCE hinst, // インスタンスのハンドル LPCTSTR lpszName, // イメージの名前( 識別子 ) UINT uType, // イメージのタイプ int cxDesired, // 希望する幅 int cyDesired, // 希望する高さ UINT fuLoad // ロードのオプション ); DESC アイコン, カーソル アニメーションカーソル, ビットマップをロードする LoadImage() のような多機能な関数では ビットマップ以外のハンドルを返す必要もあるので HANDLE 型のような ものが必要になる

NINJAIDX 17