- ベストアンサー
visual C++ 2008 矢印の描写
visual C++ 2008 のマネージアプリケーションで矢印を描きたいのですが、線しか描けません。 角度に応じて先端に三角形をつける、もしくは直接矢印を描く方法があるなら教えてください。 ちなみに線は、 Graphics^ gr = this->CreateGraphics(); gr->DrawLine(Pens::Black,x1,y1,x2,y2); で描いています。 入門用の参考書を頼りにプログラムしていたのですが、載っていなかったので質問させていただきました。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MSDN ライブラリの LineCap 列挙体の説明の冒頭に書いてあるとおり、LineCap は System.Drawing.Drawing2D 名前空間内で定義されている列挙体です。 現在のコードでは上記の名前空間を直接利用できるようになっていないものと思われます。 ソースファイルの冒頭に以下の行を追加してみてください。多分それで大丈夫なはずです。 using namespace System::Drawing::Drawing2D; 上記を追加せずにコンパイルエラーになっている行を以下のようにしてもいいのですが、……面倒くさい上に長くて分かりづらいですよね? pen->SetLineCap(System::Drawing::Drawing2D::LineCap::Flat, System::Drawing::Drawing2D::LineCap::Triangle, System::Drawing::Drawing2D::LineCap::Flat); # などとえらそうなことを言いましたが、実は指摘されるまで名前空間のことを失念しておりました。 # 最初の回答に抜けがあったことをお詫びいたします。
その他の回答 (1)
- hitomura
- ベストアンサー率48% (325/664)
MSDNライブラリを見ながらなので半分自信が無いのですが、以下のコードでいかがでしょうか。 Graphics^ gr = this->CreateGraphics(); Pen^ pen = gcnew Pen(Brushes::Black); pen->SetLineCap(LineCap::Flat, LineCap::Triangle, LineCap::Flat); gr->DrawLine(pen,x1,y1,x2,y2); なお、先端が三角形ではなく3本線の矢印も描けるようです。詳しくはMSDNライブラリでPen.SetLineCapメソッドおよびLineCap列挙体を調べてみてください。
お礼
以下のエラーが出て実行できませんでした。 'LineCap' : 識別子がクラス名でも名前空間名でもありません。 'Flat' : 定義されていない識別子です。 'LineCap' : 識別子がクラス名でも名前空間名でもありません。 'Triangle' : 定義されていない識別子です。 'LineCap' : 識別子がクラス名でも名前空間名でもありません。 'Flat' : 定義されていない識別子です。 何が足りないのでしょうか?また、MSDNライブラリに載っていいるサンプルコードでも同じエラーが出ました。
お礼
できました! 丁寧な回答ありがとうございました。