1ドット間隔の点線を描画するペンを作成する
TPenのStyleプロパティにpsDotを設定しても1ドット間隔の点線を描画してくれない。この場合はExtCreatePen APIでジオメトリックペンを作成し、それをTPenに結びつける。
LOGBRUSH logBrush; logBrush.lbColor = RGB(0x00, 0x00, 0x00); logBrush.lbHatch = 0; logBrush.lbStyle = BS_SOLID; DWORD s[] = {1, 1}; // 1ドット間隔のジオメトリックペンを生成する HPEN hPen = ExtCreatePen(PS_GEOMETRIC | PS_ENDCAP_FLAT | PS_USERSTYLE, 1, &logBrush, 2, s); // APIレベルで描画するのであれば、ハンドルをTPenへ結びつける必要は無し TPen* pDashPen = new TPen(); pDashPen->Handle = hPen;
TPenやTBrushのようなVCLの描画オブジェクトに結びつけたハンドルはVCLの内部で自動的に管理してくれる。ハンドルをExtCreatePenなどで作成してもDeleteObjectを明示的に呼び出す必要はない。ただし、operator newで作成したVCLオブジェクトはスマートポインタで管理するか明示的にoperator deleteで破棄しなければならない。