Mfc-gdi
MFC-GDI
Windowsは、デバイスコンテキストで使用するさまざまな描画ツールを提供します。 線を描くペン、内部を塗りつぶすブラシ、テキストを描くフォントを提供します。 MFCは、Windowsの描画ツールに相当するグラフィックオブジェクトクラスを提供します。
図
デバイスコンテキストは、ディスプレイやプリンターなどのデバイスの描画属性に関する情報を含むWindowsデータ構造です。 すべての描画呼び出しは、デバイスコンテキストオブジェクトを介して行われます。このオブジェクトは、線、図形、およびテキストを描画するためのWindows APIをカプセル化します。
デバイスコンテキストにより、Windowsでデバイスに依存しない描画が可能になります。 デバイスコンテキストを使用して、画面、プリンター、またはメタファイルに描画できます。
*CDC* は、MFCで描画する最も基本的なクラスです。 CDCオブジェクトは、基本的な描画手順を実行するメンバー関数と、ウィンドウのクライアント領域に関連付けられた表示コンテキストを操作するためのメンバーを提供します。
以下にCDCクラスのメソッドのリストを示します。
Sr. No. | Name & Description |
---|---|
1 |
AbortDoc 現在の印刷ジョブを終了し、 StartDoc メンバー関数の最後の呼び出し以降にアプリケーションがデバイスに書き込んだものをすべて消去します。 |
2 |
AbortPath デバイスコンテキスト内のすべてのパスを閉じて破棄します。 |
3 |
AddMetaFileComment コメントをバッファから指定された拡張形式のメタファイルにコピーします。 |
4 |
AlphaBlend 透明または半透明のピクセルを持つビットマップを表示します。 |
5 |
AngleArc 線分と円弧を描画し、現在の位置を円弧の終点に移動します。 |
6 |
Arc 楕円弧を描きます。 |
7 |
ArcTo 楕円弧を描きます。 この関数はArcに似ていますが、現在の位置が更新される点が異なります。 |
8 |
Attach このCDCオブジェクトにWindowsデバイスコンテキストをアタッチします。 |
9 |
BeginPath デバイスコンテキストでパスブラケットを開きます。 |
10 |
BitBlt 指定されたデバイスコンテキストからビットマップをコピーします。 |
11 |
Chord コード(楕円と線分が交差する閉じた図形)を描画します。 |
12 |
CloseFigure パス内の開いている図形を閉じます。 |
13 |
CreateCompatibleDC 別のデバイスコンテキストと互換性のあるメモリデバイスコンテキストを作成します。 メモリ内の画像を準備するために使用できます。 |
14 |
CreateDC 特定のデバイスのデバイスコンテキストを作成します。 |
15 |
CreateIC 特定のデバイスの情報コンテキストを作成します。 これにより、デバイスコンテキストを作成せずに、デバイスに関する情報をすばやく取得できます。 |
16 |
DeleteDC このCDCオブジェクトに関連付けられているWindowsデバイスコンテキストを削除します。 |
17 |
DeleteTempMap FromHandleによって作成された一時CDCオブジェクトを削除するために、 CWinApp アイドル時間ハンドラーによって呼び出されます。 また、デバイスコンテキストをデタッチします。 |
18 |
Detach このCDCオブジェクトからWindowsデバイスコンテキストをデタッチします。 |
19 |
DPtoHIMETRIC デバイス単位を HIMETRIC 単位に変換します。 |
20 |
DPtoLP デバイスユニットを論理ユニットに変換します。 |
21 |
Draw3dRect 3次元の長方形を描画します。 |
22 |
DrawDragRect ドラッグされた長方形を消去して再描画します。 |
23 |
DrawEdge 長方形のエッジを描画します。 |
24 |
DrawEscape グラフィックデバイスインターフェイス(GDI)を介して直接利用できないビデオディスプレイの描画機能にアクセスします。 |
25 |
DrawFocusRect フォーカスを示すために使用されるスタイルで長方形を描画します。 |
26 |
DrawFrameControl フレームコントロールを描画します。 |
27 |
DrawIcon アイコンを描画します。 |
28 |
DrawState 画像を表示し、視覚効果を適用して状態を示します。 |
29 |
DrawText 指定された長方形にフォーマットされたテキストを描画します。 |
30 |
DrawTextEx 追加のフォーマットを使用して、指定された長方形にフォーマットされたテキストを描画します。 |
31 |
Ellipse 楕円を描画します。 |
32 |
EndDoc StartDocメンバー関数によって開始された印刷ジョブを終了します。 |
33 |
EndPage ページが終了することをデバイスドライバーに通知します。 |
34 |
EndPath パスブラケットを閉じ、デバイスコンテキストへのブラケットで定義されたパスを選択します。 |
35 |
EnumObjects デバイスコンテキストで使用可能なペンとブラシを列挙します。 |
36 |
Escape GDIを介して特定のデバイスから直接利用できない機能にアプリケーションがアクセスできるようにします。 Windowsエスケープ関数へのアクセスも許可します。 アプリケーションによって行われたエスケープ呼び出しは変換され、デバイスドライバーに送信されます。 |
37 |
ExcludeClipRect 既存のクリッピング領域から指定された長方形を引いたもので構成される新しいクリッピング領域を作成します。 |
38 |
ExcludeUpdateRgn ウィンドウ内の更新された領域をクリッピング領域から除外することにより、ウィンドウの無効な領域内に描画されないようにします。 |
39 |
ExtFloodFill 現在のブラシで領域を塗りつぶします。 FloodFill メンバー関数よりも柔軟性があります。 |
40 |
ExtTextOut 現在選択されているフォントを使用して、長方形の領域内に文字列を書き込みます。 |
41 |
FillPath 現在のパスで開いている図形を閉じ、現在のブラシとポリゴン塗りつぶしモードを使用してパスの内部を塗りつぶします。 |
42 |
FillRect 特定のブラシを使用して、指定された長方形を塗りつぶします。 |
43 |
FillRgn 指定したブラシで特定の領域を塗りつぶします。 |
44 |
FillSolidRect 長方形を単色で塗りつぶします。 |
45 |
FlattenPath 選択したパス内の曲線を現在のデバイスコンテキストに変換し、各曲線を一連の線に変換します。 |
46 |
FloodFill 現在のブラシで領域を塗りつぶします。 |
47 |
FrameRect 四角形の周囲に境界線を描画します。 |
48 |
FrameRgn ブラシを使用して特定の領域の周りに境界線を描画します。 |
49 |
FromHandle デバイスコンテキストへのハンドルを指定すると、CDCオブジェクトへのポインターを返します。 CDCオブジェクトがハンドルにアタッチされていない場合、一時CDCオブジェクトが作成されてアタッチされます。 |
50 |
GetArcDirection デバイスコンテキストの現在の弧の方向を返します。 |
51 |
GetAspectRatioFilter 現在のアスペクト比フィルターの設定を取得します。 |
52 |
GetBkColor 現在の背景色を取得します。 |
53 |
GetBkMode バックグラウンドモードを取得します。 |
54 |
GetBoundsRect 指定されたデバイスコンテキストの現在の累積された境界四角形を返します。 |
55 |
GetBrushOrg 現在のブラシの原点を取得します。 |
56 |
GetCharABCWidths 現在のフォントから指定された範囲内の連続した文字の幅を論理単位で取得します。 |
57 |
GetCharABCWidthsI 現在のTrueTypeフォントから指定された範囲内の連続するグリフインデックスの幅を論理単位で取得します。 |
58 |
GetCharacterPlacement 文字列に関するさまざまなタイプの情報を取得します。 |
59 |
GetCharWidth 現在のフォントから指定された範囲内の連続する文字の小数幅を取得します。 |
60 |
GetCharWidthI 現在のフォントから指定範囲内の連続するグリフインデックスの幅を論理座標で取得します。 |
61 |
GetClipBox 現在のクリッピング境界の周囲の最も狭い境界矩形の寸法を取得します。 |
62 |
GetColorAdjustment デバイスコンテキストの色調整値を取得します。 |
63 |
GetCurrentBitmap 現在選択されている CBitmap オブジェクトへのポインターを返します。 |
64 |
GetCurrentBrush 現在選択されている CBrush オブジェクトへのポインターを返します。 |
65 |
GetCurrentFont 現在選択されている CFont オブジェクトへのポインターを返します。 |
66 |
GetCurrentPalette 現在選択されている CPalette オブジェクトへのポインターを返します。 |
48 |
GetCurrentPen 現在選択されている CPen オブジェクトへのポインターを返します。 |
67 |
GetCurrentPosition ペンの現在の位置を(論理座標で)取得します。 |
68 |
GetDCBrushColor 現在のブラシの色を取得します。 |
69 |
GetDCPenColor 現在のペンの色を取得します。 |
70 |
GetDeviceCaps 特定のディスプレイデバイスの機能に関するデバイス固有の指定された種類の情報を取得します。 |
71 |
GetFontData スケーラブルフォントファイルからフォントメトリック情報を取得します。 取得する情報は、フォントファイルへのオフセットと返す情報の長さを指定することによって識別されます。 |
72 |
GetFontLanguageInfo 指定された表示コンテキストで現在選択されているフォントに関する情報を返します。 |
73 |
GetGlyphOutline 現在のフォントのアウトライン文字のアウトライン曲線またはビットマップを取得します。 |
74 |
GetGraphicsMode 指定されたデバイスコンテキストの現在のグラフィックモードを取得します。 |
75 |
GetHalftoneBrush ハーフトーンブラシを取得します。 |
76 |
GetKerningPairs 指定されたデバイスコンテキストで現在選択されているフォントの文字カーニングペアを取得します。 |
77 |
GetLayout デバイスコンテキスト(DC)のレイアウトを取得します。 レイアウトは、左から右(デフォルト)または右から左(ミラー)のいずれかです。 |
78 |
GetMapMode 現在のマッピングモードを取得します。 |
79 |
GetMiterLimit デバイスコンテキストのマイター制限を返します。 |
80 |
GetNearestColor 指定したデバイスが表すことができる指定した論理色に最も近い論理色を取得します。 |
81 |
GetOutlineTextMetrics TrueTypeフォントのフォントメトリック情報を取得します。 |
82 |
GetOutputCharWidth 出力デバイスコンテキストを使用して、現在のフォントから連続した文字グループの個々の文字の幅を取得します。 |
83 |
GetOutputTabbedTextExtent 出力デバイスコンテキストの文字列の幅と高さを計算します。 |
84 |
GetOutputTextExtent 現在のフォントを使用して寸法を決定し、出力デバイスコンテキストのテキスト行の幅と高さを計算します。 |
85 |
GetOutputTextMetrics 出力デバイスコンテキストから現在のフォントのメトリックを取得します。 |
86 |
GetPath デバイスコンテキストに選択されたパスで見つかった線の終点と曲線の制御点を定義する座標を取得します。 |
87 |
GetPixel 指定されたポイントのピクセルのRGBカラー値を取得します。 |
88 |
GetPolyFillMode 現在のポリゴン塗りつぶしモードを取得します。 |
89 |
GetROP2 現在の描画モードを取得します。 |
90 |
GetSafeHdc 出力デバイスコンテキストである m_hDC を返します。 |
91 |
GetStretchBltMode 現在のビットマップストレッチモードを取得します。 |
92 |
GetTabbedTextExtent 属性デバイスコンテキストの文字列の幅と高さを計算します。 |
93 |
GetTextAlign テキスト配置フラグを取得します。 |
94 |
GetTextCharacterExtra 文字間スペースの量の現在の設定を取得します。 |
95 |
GetTextColor 現在のテキストの色を取得します。 |
96 |
GetTextExtent 現在のフォントを使用して寸法を決定する属性デバイスコンテキスト上のテキスト行の幅と高さを計算します。 |
97 |
GetTextExtentExPointI 指定されたスペースに収まる指定された文字列の文字数を取得し、それらの各文字のテキスト範囲で配列を埋めます。 |
98 |
GetTextExtentPointI グリフインデックスの指定された配列の幅と高さを取得します。 |
99 |
GetTextFace 現在のフォントの書体名をヌル終了文字列としてバッファにコピーします。 |
100 |
GetTextMetrics 属性デバイスコンテキストから現在のフォントのメトリックを取得します。 |
101 |
GetViewportExt ビューポートのx範囲とy範囲を取得します。 |
102 |
GetViewportOrg ビューポートの原点のx座標とy座標を取得します。 |
103 |
GetWindow ディスプレイデバイスコンテキストに関連付けられたウィンドウを返します。 |
104 |
GetWindowExt 関連付けられたウィンドウのx範囲とy範囲を取得します。 |
105 |
GetWindowOrg 関連付けられたウィンドウの原点のx座標とy座標を取得します。 |
106 |
GetWorldTransform 現在のワールド空間からページ空間への変換を取得します。 |
107 |
GradientFill 長方形と三角形の構造をグラデーションの色で塗りつぶします。 |
108 |
GrayString 指定された場所に淡色表示(グレー表示)されたテキストを描画します。 |
109 |
HIMETRICtoDP HIMETRICユニットをデバイスユニットに変換します。 |
110 |
HIMETRICtoLP HIMETRIC単位を論理単位に変換します。 |
111 |
IntersectClipRect 現在の領域と長方形の交点を形成することにより、新しいクリッピング領域を作成します。 |
112 |
InvertRect 長方形の内容を反転します。 |
113 |
InvertRgn 領域の色を反転します。 |
114 |
IsPrinting デバイスコンテキストが印刷に使用されているかどうかを判断します。 |
115 |
LineTo 現在位置からポイントまで(ただし、ポイントは含まない)に線を描画します。 |
116 |
LPtoDP 論理ユニットをデバイスユニットに変換します。 |
117 |
LPtoHIMETRIC 論理ユニットをHIMETRICユニットに変換します。 |
118 |
MaskBlt 指定されたマスクおよびラスター操作を使用して、ソースビットマップとターゲットビットマップのカラーデータを組み合わせます。 |
119 |
ModifyWorldTransform 指定されたモードを使用して、デバイスコンテキストのワールド変換を変更します。 |
120 |
MoveTo 現在の位置を移動します。 |
121 |
OffsetClipRgn 指定されたデバイスのクリッピング領域を移動します。 |
122 |
OffsetViewportOrg 現在のビューポートの原点の座標を基準にしてビューポートの原点を変更します。 |
123 |
OffsetWindowOrg 現在のウィンドウの原点の座標を基準にしてウィンドウの原点を変更します。 |
124 |
PaintRgn 選択したブラシで領域を塗りつぶします。 |
125 |
PatBlt ビットパターンを作成します。 |
126 |
Pie パイ型のくさびを描画します。 |
127 |
PlayMetaFile 指定されたデバイスで指定されたメタファイルの内容を再生します。 PlayMetaFileの拡張バージョンは、指定された拡張形式のメタファイルに保存されている画像を表示します。 メタファイルは何度でも再生できます。 |
128 |
PlgBlt ソースデバイスコンテキストの指定された四角形から、指定されたデバイスコンテキストの指定された平行四辺形への色データのビットのビットブロック転送を実行します。 |
129 |
PolyBezier 1つ以上のBzierスプラインを描画します。 現在の位置は使用も更新もされません。 |
130 |
PolyBezierTo 1つ以上のBzierスプラインを描画し、現在の位置を最後のBzierスプラインの終点に移動します。 |
131 |
PolyDraw 一連の線分とベジェスプラインを描画します。 この関数は現在の位置を更新します。 |
132 |
Polygon 線で接続された2つ以上のポイント(頂点)で構成されるポリゴンを描画します。 |
133 |
Polyline 指定されたポイントを結ぶ線分セットを描画します。 |
134 |
PolylineTo 1つ以上の直線を描画し、現在の位置を最後の線の終点に移動します。 |
135 |
PolyPolygon 現在のポリゴン塗りつぶしモードを使用して塗りつぶされる2つ以上のポリゴンを作成します。 ポリゴンはばらばらであるか、重なっている場合があります。 |
136 |
PolyPolyline 接続された線セグメントの複数のシリーズを描画します。 現在の位置は、この関数では使用も更新もされません。 |
137 |
PtVisible 指定されたポイントがクリッピング領域内にあるかどうかを指定します。 |
138 |
RealizePalette 現在の論理パレットのパレットエントリをシステムパレットにマップします。 |
139 |
Rectangle 現在のペンを使用して四角形を描画し、現在のブラシを使用して四角形を塗りつぶします。 |
140 |
RectVisible 指定された長方形の一部がクリッピング領域内にあるかどうかを決定します。 |
141 |
ReleaseAttribDC 属性デバイスコンテキスト m_hAttribDC をリリースします。 |
142 |
ReleaseOutputDC 出力デバイスコンテキストである m_hDC をリリースします。 |
143 |
ResetDC** m_hAttribDCデバイスコンテキストを更新します。 |
144 |
RestoreDC
|
145 |
RoundRect 現在のペンを使用して角を丸め、現在のブラシを使用して塗りつぶした長方形を描画します。 |
146 |
SaveDC デバイスコンテキストの現在の状態を保存します。 |
147 |
ScaleViewportExt 現在の値を基準にしてビューポート範囲を変更します。 |
148 |
ScaleWindowExt 現在の値に関連してウィンドウの範囲を変更します。 |
149 |
ScrollDC ビットの長方形を水平および垂直にスクロールします。 |
150 |
SelectClipPath 現在のパスをデバイスコンテキストのクリッピング領域として選択し、指定されたモードを使用して新しい領域を既存のクリッピング領域と組み合わせます。 |
151 |
SelectClipRgn 指定されたモードを使用して、指定された領域を現在のクリッピング領域と結合します。 |
152 |
SelectObject ペンなどのGDI描画オブジェクトを選択します。 |
153 |
SelectPalette 論理パレットを選択します。 |
154 |
SelectStockObject Windowsが提供する定義済みのストックペン、ブラシ、またはフォントのいずれかを選択します。 |
155 |
SetAbortProc 印刷ジョブを中止する必要がある場合にWindowsが呼び出すプログラマー提供のコールバック関数を設定します。 |
156 |
SetArcDirection 円弧および長方形の機能に使用される描画方向を設定します。 |
157 |
SetAttribDC 属性デバイスコンテキストであるm_hAttribDCを設定します。 |
158 |
SetBkColor 現在の背景色を設定します。 |
159 |
SetBkMode バックグラウンドモードを設定します。 |
160 |
SetBoundsRect 指定されたデバイスコンテキストの境界矩形情報の蓄積を制御します。 |
161 |
SetBrushOrg デバイスコンテキストに選択された次のブラシの原点を指定します。 |
162 |
SetColorAdjustment 指定した値を使用して、デバイスコンテキストの色調整値を設定します。 |
163 |
SetDCBrushColor 現在のブラシの色を設定します。 |
164 |
SetDCPenColor 現在のペンの色を設定します。 |
165 |
SetGraphicsMode 指定したデバイスコンテキストの現在のグラフィックモードを設定します。 |
166 |
SetLayout デバイスコンテキスト(DC)のレイアウトを変更します。 |
167 |
SetMapMode 現在のマッピングモードを設定します。 |
168 |
SetMapperFlags フォントマッパーが論理フォントを物理フォントにマップするときに使用するアルゴリズムを変更します。 |
169 |
SetMiterLimit デバイスコンテキストのマイター結合の長さの制限を設定します。 |
170 |
SetOutputDC 出力デバイスコンテキストであるm_hDCを設定します。 |
171 |
SetPixel 指定されたポイントのピクセルを、指定された色の最も近い近似値に設定します。 |
172 |
SetPixelV 指定した座標のピクセルを、指定した色の最も近い近似値に設定します。 SetPixelV は SetPixel よりも高速です。これは、実際にペイントされたポイントのカラー値を返す必要がないためです。 |
173 |
SetPolyFillMode ポリゴン塗りつぶしモードを設定します。 |
175 |
SetROP2 現在の描画モードを設定します。 |
176 |
SetStretchBltMode ビットマップストレッチモードを設定します。 |
177 |
SetTextAlign テキスト配置フラグを設定します。 |
178 |
SetTextCharacterExtra 文字間スペースの量を設定します。 |
179 |
SetTextColor テキストの色を設定します。 |
180 |
SetTextJustification 文字列の区切り文字にスペースを追加します。 |
181 |
SetViewportExt ビューポートのx範囲とy範囲を設定します。 |
182 |
SetViewportOrg ビューポートの原点を設定します。 |
183 |
SetWindowExt 関連付けられたウィンドウのx範囲とy範囲を設定します。 |
184 |
SetWindowOrg デバイスコンテキストのウィンドウの原点を設定します。 |
185 |
SetWorldTransform 現在のワールド空間からページ空間への変換を設定します。 |
186 |
StartDoc 新しい印刷ジョブが開始されていることをデバイスドライバーに通知します。 |
187 |
StartPage 新しいページが開始されていることをデバイスドライバーに通知します。 |
188 |
StretchBlt ビットマップをソース長方形およびデバイスからターゲット長方形に移動し、必要に応じてビットマップをストレッチまたは圧縮して、ターゲット長方形のサイズに合わせます。 |
189 |
StrokeAndFillPath パス内の開いている図形をすべて閉じ、現在のペンを使用してパスの輪郭を描き、現在のブラシを使用してその内部を塗りつぶします。 |
190 |
StrokePath 現在のペンを使用して、指定されたパスをレンダリングします。 |
191 |
TabbedTextOut 指定された場所に文字列を書き込み、タブストップ位置の配列で指定された値にタブを展開します。 |
192 |
TextOut 現在選択されているフォントを使用して、指定された場所に文字列を書き込みます。 |
193 |
TransparentBlt 指定されたソースデバイスコンテキストから宛先デバイスコンテキストに色データのビットブロックを転送し、転送で指定された色を透明にします。 |
194 |
UpdateColors クライアント領域の現在の色をピクセル単位でシステムパレットに一致させることにより、デバイスコンテキストのクライアント領域を更新します。 |
195 |
WidenPath デバイスコンテキストで現在選択されているペンを使用してパスがストロークされた場合に、ペイントされる領域として現在のパスを再定義します。 |
行
ステップ1 *- *MFCGDIDemo という名前の新しいMFCベースの単一ドキュメントプロジェクトを作成して、簡単な例を見てみましょう。
ステップ2 *-プロジェクトが作成されたら、ソリューションエクスプローラーに移動し、ソースファイルフォルダーの下の *MFCGDIDemoView.cpp ファイルをダブルクリックします。
- ステップ3 *- CMFCGDIDemoView
- OnDraw()*メソッドで以下に示すように線を引きます。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
pDC->MoveTo(95, 125);
pDC->LineTo(230, 125);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
- ステップ4 *-このアプリケーションを実行します。 次の出力が表示されます。
- *ステップ5 *-CDC
- MoveTo()メソッドを使用して、行の開始位置を設定します。
LineTo()を使用する場合、プログラムはMoveTo()ポイントからLineTo()エンドまで開始します。
LineTo()の後、MoveTo()を呼び出さず、他のポイント値でLineTo()を再度呼び出すと、プログラムは前のLineTo()から新しいLineTo()ポイントまで線を引きます。
- ステップ6 *-さまざまな線を描画するには、次のコードに示すようにこのプロパティを使用できます。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
pDC->MoveTo(95, 125);
pDC->LineTo(230, 125);
pDC->LineTo(230, 225);
pDC->LineTo(95, 325);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
- ステップ7 *-このアプリケーションを実行します。 次の出力が表示されます。
ポリライン
- *ポリライン*は一連の接続されたラインです。 行は、POINTまたはCPoint値の配列に格納されます。 ポリラインを描画するには、CDC
- Polyline()メソッドを使用します。 ポリラインを描画するには、少なくとも2つのポイントが必要です。 3つ以上のポイントを定義すると、最初のポイントの後の各ラインは、すべてのポイントが含まれるまで、前のポイントから次のポイントまで描画されます。
- ステップ1 *-簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
CPoint Pt[7];
Pt[0] = CPoint(20, 150);
Pt[1] = CPoint(180, 150);
Pt[2] = CPoint(180, 20);
pDC−Polyline(Pt, 3);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
- ステップ2 *-このアプリケーションを実行すると、次の出力が表示されます。
長方形
- *長方形*は、4つの直角を構成する4つの辺で構成される幾何学的図形です。 線と同様に、長方形を描くには、開始位置と終了位置を定義する必要があります。 長方形を描くには、CDC
- Rectangle()メソッドを使用できます。
- ステップ1 *-簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
pDC->Rectangle(15, 15, 250, 160);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
- ステップ2 *-このアプリケーションを実行すると、次の出力が表示されます。
四角
- 正方形*は、4つの直角を構成する4つの辺で構成される幾何学的図形ですが、各辺の長さは等しくなければなりません。
簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
pDC->Rectangle(15, 15, 250, 250);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
このアプリケーションを実行すると、次の出力が表示されます。
Pies
- *パイ*は、楕円の中心からそれぞれ片側に伸びる2本の線で区切られた楕円の一部です。 パイを描画するには、以下に示すようにCDC
- Pie()メソッドを使用できます-
BOOL Pie(int x1、int y1、int x2、int y2、int x3、int y3、int x4、int y4);
- (x1、y1)ポイントは、円を表す楕円が収まる長方形の左上隅を決定します。 (x2、y2)ポイントは、長方形の右下隅です。
- (x3、y3)ポイントは、デフォルトの反時計回り方向のパイの開始コーナーを指定します。
- (x4、y4)ポイントは、パイの終点を特定します。
簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
pDC->Pie(40, 20, 226, 144, 155, 32, 202, 115);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
- ステップ2 *-このアプリケーションを実行すると、次の出力が表示されます。
Arcs
- 円弧は楕円の一部またはセグメントです。つまり、円弧は完全な楕円ではありません。 円弧を描くには、CDC
- Arc()メソッドを使用できます。
BOOL Arc(int x1、int y1、int x2、int y2、int x3、int y3、int x4、int y4);
CDCクラスにはSetArcDirection()メソッドが装備されています。
ここに構文があります-
int SetArcDirection(int nArcDirection)
Sr.No. | Value & Orientation |
---|---|
1 |
AD_CLOCKWISE 図は時計回りに描かれます |
2 |
AD_COUNTERCLOCKWISE 図は反時計回りに描かれます |
- ステップ1 *-簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
pDC->Arc(20, 20, 226, 144, 202, 115, 105, 32);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
- ステップ2 *-このアプリケーションを実行すると、次の出力が表示されます。
和音
これまでに描いた円弧は、始点と終点を持つ線で構成されているため、開いた図形と見なされます(円や長方形とは異なります)。 *コード*は、両端が直線で接続されている円弧です。
- コードを描画するには、CDC
- Chord()メソッドを使用できます。
BOOL Chord(int x1、int y1、int x2、int y2、int x3、int y3、int x4、int y4);
簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
pDC->SetArcDirection(AD_CLOCKWISE);
pDC->Chord(20, 20, 226, 144, 202, 115, 105, 32);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
上記のアプリケーションを実行すると、次の出力が表示されます。
この例の弧の方向は時計回りに設定されています。
色
- 色*は、オブジェクトの審美的な外観を向上させる最も基本的なオブジェクトの1つです。 色は、視覚的側面の一部を変更するためにオブジェクトに追加される非空間オブジェクトです。 MFCライブラリは、Win32 APIと組み合わせて、色のさまざまな側面を活用するために使用できるさまざまなアクションを提供します。
RGBマクロは関数のように動作し、コンマで区切られた3つの数値を渡すことができます。 次のコードに示すように、各値は0〜255の間でなければなりません。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
COLORREF color = RGB(239, 15, 225);
}
簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
COLORREF color = RGB(239, 15, 225);
pDC->SetTextColor(color);
pDC->TextOut(100, 80, L"MFC GDI Tutorial", 16);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
このアプリケーションを実行すると、次の出力が表示されます。
フォント
*CFont* は、Windowsグラフィックデバイスインターフェイス(GDI)フォントをカプセル化し、フォントを操作するためのメンバー関数を提供します。 CFontオブジェクトを使用するには、CFontオブジェクトを作成し、それにWindowsフォントを添付してから、オブジェクトのメンバー関数を使用してフォントを操作します。
____これはCFontクラスのメソッドのリストです。
Sr.No. | Name & Description |
---|---|
1 |
CreateFont 指定された特性でCFontを初期化します。 |
2 |
CreateFontIndirect
|
3 |
CreatePointFont 10分の1ポイントで測定された指定された高さ、および書体でCFontを初期化します。 |
4 |
CreatePointFontIndirect
|
5 |
FromHandle Windows HFONT を指定すると、CFontオブジェクトへのポインターを返します。 |
6 |
GetLogFont LOGFONTに、CFontオブジェクトに関連付けられた論理フォントに関する情報を入力します。 |
簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC *pDC) {
CFont font;
font.CreatePointFont(920, L"Garamond");
CFont* pFont = pDC->SelectObject(&font);
COLORREF color = RGB(239, 15, 225);
pDC->SetTextColor(color);
pDC->TextOut(100, 80, L"MFC GDI Tutorial", 16);
pDC->SelectObject(pFont);
font.DeleteObject();
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
上記のアプリケーションを実行すると、次の出力が表示されます。
Pens
ペン*は、デバイスコンテキストに線と曲線を描くために使用するツールです。 グラフィックプログラミングでは、ペンを使用して、長方形や多角形などの幾何学的な閉じた形状の境界線を描画します。 Microsoft Windowsは、 *cosmetic と geometric の2種類のペンを考慮します。
ペンは、1ピクセル以下の固定幅の単純な線のみを描画するために使用できる場合、化粧品と呼ばれます。 ペンは、異なる幅とさまざまな端を想定できる幾何学的です。 MFCは、Windowsグラフィックデバイスインターフェイス(GDI)ペンをカプセル化するクラス CPen を提供します。
____これはCPenクラスのメソッドのリストです。
Sr.No. | Name & Description |
---|---|
1 |
CreatePen 指定されたスタイル、幅、およびブラシ属性で論理的な化粧または幾何学的なペンを作成し、それをCPenオブジェクトにアタッチします。 |
2 |
CreatePenIndirect LOGPEN構造体で指定されたスタイル、幅、色でペンを作成し、CPenオブジェクトに添付します。 |
3 |
FromHandle Windows HPEN を指定すると、CPenオブジェクトへのポインターを返します。 |
4 |
GetExtLogPen EXTLOGPENの基礎となる構造を取得します。 |
5 |
GetLogPen LOGPENの基本構造を取得します。 |
____ここでペンの異なるスタイル値
Sr.No. | *Name & Description * |
---|---|
1 |
連続した実線。 |
2 |
PS_DASH 破線の中断のある連続線。 |
3 |
PS_DOT 1ピクセルおきにドットが途切れる線。 |
4 |
PS_DASHDOT 交互の破線と点の組み合わせ。 |
5 |
PS_DASHDOTDOT ダッシュと二重点線の中断の組み合わせ。 |
6 |
PS_NULL 目に見える線はありません。 |
7 |
PS_INSIDEFRAME 閉じた形状の境界線のすぐ内側に描かれた線。 |
簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC* pDC) {
CPen pen;
pen.CreatePen(PS_DASHDOTDOT, 1, RGB(160, 75, 90));
pDC->SelectObject(&pen);
pDC->Rectangle(25, 35, 250, 125);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
上記のアプリケーションを実行すると、次の出力が表示されます。
ブラシ
ブラシ*は、閉じた形状または線の内部を塗りつぶすために使用される描画ツールです。 ブラシは、ペンキのバケツを拾ってどこかに注ぐような動作をします。 MFCは、Windowsグラフィックデバイスインターフェイス(GDI)ブラシをカプセル化するクラス *CBrush を提供します。
____これは、CBrushクラスのメソッドのリストです。
Sr.NO. | Name & Description |
---|---|
1 |
CreateBrushIndirect LOGBRUSH構造体で指定されたスタイル、色、およびパターンでブラシを初期化します。 |
2 |
CreateDIBPatternBrush デバイスに依存しないビットマップ(DIB)で指定されたパターンでブラシを初期化します。 |
3 |
CreateHatchBrush 指定されたハッチングパターンと色でブラシを初期化します。 |
4 |
CreatePatternBrush ビットマップで指定されたパターンでブラシを初期化します。 |
5 |
CreateSolidBrush 指定した単色でブラシを初期化します。 |
6 |
CreateSysColorBrush デフォルトのシステムカラーであるブラシを作成します。 |
7 |
FromHandle Windows HBRUSHオブジェクトへのハンドルを指定すると、CBrushオブジェクトへのポインターを返します。 |
8 |
GetLogBrush LOGBRUSH構造体を取得します。 |
簡単な例を見てみましょう。
void CMFCGDIDemoView::OnDraw(CDC *pDC) {
CBrush brush(RGB(100, 150, 200));
CBrush* pBrush = pDC->SelectObject(&brush);
pDC->Rectangle(25, 35, 250, 125);
pDC->SelectObject(pBrush);
CMFCGDIDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//TODO: add draw code for native data here
}
このアプリケーションを実行すると、次の出力が表示されます。