デバイスコンテキストとは何か?
一言でいうと:
**描画するための「キャンバス+筆+設定のセット」**のようなものです。
たとえば絵を描くとき…
あなたが紙に絵を描くと想像してください。
・紙:画面、ウィンドウ、プリンターなど「描きたい対象(デバイス)」
・筆・パン・色などの道具:線の色、太さ、フォントなど「描画に使う設定」
・描く人:あなたのプログラム
このときに、紙と道具を一括で管理してくれる「お絵描きセット」のようなものがデバイスコンテキスト(DC)です。
もう少し技術的に
Windowsでは、画面やプリンタなど、いろいろな「デバイス」に対して描画することができます。
そのときに、「どこに」どんな設定で」描くかを Windowsに教える必要があります。
それをまとめて管理しているのが HDC (Handle to Device Context) です。
具体例 (WinAPI)
|
1 2 3 |
HDC hdc = GetDC(hwnd); // hwnd = ウィンドウハンドル TextOut(hdc, 10, 18, L"こんにちは", 5); ReleaseDC(hwnd, hdc); |
このコードでは:
- Getpc(hund):ウインドウに対するデバイスコンテキストを取得
- Textout(…):そのDCを使って文字を描画
- Releasepc(…):使い終わったら開放
重要なポイント
- DCは描画のために必要な情報をまとめたオブジェクト
- これがなければ、Windowsは「どこにどうやって描いていいのか」分からない
- DCには、色・フォント・ブラシ・ペンなどの状態が保存されている
よく使うDCの種類
| 種類 | 用途 |
| HDC from GetDC | 画面への描画 |
| Memory DC | オフスクリーン描画(バッファ) |
| Printer DC | 印刷処理 |
まとめ
| 用語 | 意味 |
| デバイス | 描画の対象(画面・プリンタなど) |
| コンテキスト | 状態や設定を保持する枠組み |
| デバイスコンテキスト | 描画対象+描画設定をまとめたもの |

コメント