次の方法で共有


グラフィック オブジェクトに対する操作

アプリケーションは、ディスプレイまたはプリンター DC を作成した後、関連付けられているデバイスでの描画を開始するか、メモリ DC の場合は、メモリに格納されているビットマップでの描画を開始できます。 ただし、描画が開始される前、および描画の進行中に、多くの場合、既定のオブジェクトを新しいオブジェクトに置き換える必要があります。

アプリケーションは、 GetCurrentObject 関数と GetObject 関数を呼び出すことによって、既定のオブジェクトの属性を調べることができます。 GetCurrentObject 関数は、現在のペン、ブラシ、パレット、ビットマップ、またはフォントを識別するハンドルを返し、GetObject 関数はそのオブジェクトの属性を含む構造体を初期化します。

一部のプリンターでは、常駐ペン、ブラシ、フォントが用意されており、アプリケーションの描画速度を向上させるために使用できます。 EnumObjectsEnumFontFamilies の 2 つの関数を使用して、これらのオブジェクトを列挙できます。 アプリケーションで常駐ペンまたはブラシを列挙する必要がある場合は、 EnumObjects 関数を呼び出して対応する属性を調べることができます。 アプリケーションで常駐フォントを列挙する必要がある場合は、 EnumFontFamilies 関数を呼び出すことができます (GDI フォントを列挙することもできます)。

アプリケーションは、既定のオブジェクトを置き換える必要があると判断したら、次のいずれかの作成関数を呼び出して新しいオブジェクトを作成します。

グラフィック オブジェクト 機能
Bitmap CreateBitmapCreateBitmapIndirectCreateCompatibleBitmapCreateDiscardableBitmapCreateDIBitmap
ブラシ CreateBrushIndirectCreateDIBPatternBrushCreateDIBPatternBrushPtCreateHatchBrushCreatePatternBrushCreateSolidBrush
色パレット CreatePalette
フォント CreateFontCreateFontIndirect
ペン CreatePenCreatePenIndirectExtCreatePen
リージョン CreateEllipticRgnCreateEllipticRgnIndirectCreatePolygonRgnCreatePolyPolygonRgnCreateRectRgnCreateRectRgnIndirectCreateRoundRectRgn

 

これらの各関数は、新しいオブジェクトを識別するハンドルを返します。 アプリケーションがハンドルを取得した後、 SelectObject 関数を呼び出して既定のオブジェクトを置き換える必要があります。 ただし、アプリケーションでは、既定のオブジェクトを識別するハンドルを保存し、不要になったときにこのハンドルを使用して新しいオブジェクトを置き換える必要があります。 アプリケーションが新しいオブジェクトで描画を完了したら、 SelectObject 関数を呼び出して既定のオブジェクトを復元し、 DeleteObject 関数を呼び出して新しいオブジェクトを削除する必要があります。 オブジェクトの削除に失敗すると、パフォーマンスに重大な問題が発生します。