• ベストアンサー

線を引くには?

Visual C++ 2003でFormを使用しています。 それでForm[デザイン]にPictureBox作り、そのPictureBoxに線を描きたいのですが、どのようにプログラムを書けばよろしいのでしょうか? 線は直線です。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

線の描画は Graphicsオブジェクトを通して行います 描画イベントで Graphics* g = pictureBox1->CreateGraphics(); g->DrawLine( __gc new Pen( Color::red ), Point( 10,10), Pen( 100, 100 ) ); g->Dispose(); といった具合ですよ # こちらは一時的な描画です … 他のウィンドウが重なると消えてしまいます または Bitmapオブジェクトを使って Bitmap* bmp = (Bitmap*)pictureBox1->Image; if ( bmp == NULL )   bmp = __gc new Bitmap( PictureBox1->Width, pictureBox1->Height ); Graphics* g = Graphics::FromImage( bmp ); g->DrawLine( __gc new Pen( Color::red ), Point( 10,10), Pen( 100, 100 ) ); g->Dispose(); pictureBox1->Image = bmp; といった具合にすると他のウィンドウが重なっても消えません

zion16
質問者

お礼

やりました。 線が書けました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Visual Web Developer 2008 Expressでの線描画

    Visual Web Developer 2008 ExpressでWebアプリを勉強しています。 Webの画面上に描画エリアを設けて、その中に線(Lineや PolyLine)の 描画をしようと思うのですが、インターネットで調べると、PictureBoxを配置して、その中に描画するように書いてあります。 しかし、Visual Web Developer 2008 Expressのツールボックスには、PictureBoxは、ありません。 (Imageならあります) JavaScriptで描画するという手もありますが、プログラム(C#)の中にPaintイベントを作成して、描画を行うようにするには、どうすればよいでしょうか? 最終的には、クライアントからデータを送って、その内容を描画するようなページにしたいと思っています。 やはりFlashを使わないと不可能でしょうか? Visual Web Developer 2008 Expressでの何か良いサンプルがありましたら、紹介していただけるとありがたいです。

  • 円のプログラム

    円の中の模様を認識するプログラムを作成しています。 中心点から外側に向かい、色情報を格納していく方法を考えているのですが、 四角の場合では、縦と横だけなのでできたのですが、 円の場合だと角度をつけてみていく方法が解りません。 理論的に三角関数やラジアンなどを使うのは解るのですが、それをどうプログラムにしていくかが解りません。 だれか教えてくれませんか? プログラムの流れでもいいので教えてください。 (できれば詳しく教えてもらうと助かりますが…。) 私が使っているのは、Visual studio .NET2003です。 Formアプリケーションを使っています。 FormにPictureBoxとボタンを2つ作り、ボタンを押すとPictureBoxに円画像が出てき、もう一つのボタンを押すと円画像の中心から線が引けているといったものを作りたいのです。

  • 移動する線を描画したい(何と例えたらいいのか・・・)

    Microsoft Visual Studio.Netの2003でC#を使っています。 pictureBoxに描画する時に、マウスとともに移動できる線(1つ前に描画した線を消せる)を 引きたいと思ったのですが、何の関数を使えば良いか分かりません・・・ よくマウスの先端から縦横に線が出て、今いる座標が分かるような描画ソフトがありますよね、 あんな感じの線を描画したいです。 つまり線は見えるけども後ろの絵は消えてないというやつです。それでマウスが動いたら 縦横の線も移動します。 どういう方法があるのでしょうか?

  • ヒストグラムを重ねる方法

    円画像を読み込みまして、その画像をヒストグラムに変換し、また別の円画像をヒストグラムに変換し、そして二つのヒストグラムを1つに重ねて合うか?といったものを作ろうとしているんですが、出だしから解らなくて困ってます。大まかに言うと… ・まず円画像をヒストグラムに変換がわからないこと。 ・次に2のヒストグラムを出したものを比べる方法がわからないこと。 この2点のプログラムの書き方が解りません。 私はVisual studio.NET2003を使用しています。 FormデザインにBottonを4つ作り、PictureBoxも4つ作る予定です。 PictureBox4つは、1つ目のBottonを押すと画像を出す。2つ目のBottonを押すとヒストグラムを出す。 3つ目のBottonを押すと別のヒストグラムを出す。4つ目のBottonを押すと2つと3つを重ねる。といった感じにしたいと考えています。 そのプログラムはどういった感じにすればいいでしょうか?

  • C#「オブジェクト参照が必要です」(初心者)

    Visual C# 2008を学習中なんですが、とりあえず何か作ってみようと思って、パラパラマンガに挑戦してみました。 Form1にpictureBox1を作り、waitを入れてイメージを書き換えるという単純なものです。 ところが実行しようと思ったら、「静的でないフィールド、メソッド、またはプロパティ’WindowsFormApplication1.Form1.pictureBox1’でオブジェクト参照が必要です」というエラーが出ます。その際のフォーカスは、main()内の Form1.pictureBox1.image = Image.FromFile("motion1.png"); ”Form1.pictureBox1”に当てられています。 何が原因と考えられるでしょうか。 もし情報不足であればご指摘いただくか、あるいはこの目的においてやらなければいけないこと、を大雑把に教えていただくだけでも幸いです。 よろしくお願いします。

  • Visual Basic 2008 Express Edition の「form.vb [デザイン]」の画面

    Visual Basicを始めて使いました。 Visual Basic 2008 Express Editionです。 buttonやLabelなどを付けて、プログラムを書いて、保存しました。 そして一度Visual Basicを閉じて、また起動しました。 そして「最近使ったプロジェクト」でさっき保存したプロジェクトを開いたんですが、「Form1.bv [デザイン]」の画面がありません。 プログラムが書いてある「Form1.bv」の画面は開いています。 ボタンの位置などを変えたいので「Form1.bv [デザイン]」を開きたいのですが、どうやって開くんでしょうか。 教えてください。よろしくお願いします。

  • PictureBoxの描画について

    VB2005を使用してPictureBoxに線を描きました。  Dim g As Graphics = PictureBox1.CreateGraphics()  g.DrawLine(p, X1, Y1, X2, Y2) 線は上手く描けたのですが、表示している画面(Form)を最小化して再度最大化すると、描いた線が消えてしまいます。FormをHideしてもう一度Showしても同じです。 この描画を消さないようにするには、どうすればよいでしょうか?

  • C#で質問です

    プログラム初心者です。 Visual C# 2010でプログラムを作成しています。 Form1のボタンでForm2を表示して、さらにForm2のボタンでForm3を表示します。 Form1で使用しているシリアルポートからForm3で入力したデータを送信したいです。 Form1とForm3の間でデータのやり取りをするにはどうすればいいでしょうか? よろしくお願いいたします。

  • pictureboxの名前を変数で設定したい

    form1に100個のpicturbox(picturebox1~picturebox100)が乱雑に貼り付けられていて pictuteboxのleftとtopをプログラムで指定したいのですが picturboxの名前を変数でとるにはどうしたらよいでしょうか。 (処理に内容で配置が変わるため変更したい) 下記では上手くできませんでした。 for i=1 to 100 Dim pic As PictureBox = Me.Controls("PictureBox" & i).left=xx(i) next 環境 windows 7 Microsoft Visual 2010 express

  • visual C++でのツール番号の指定方法

    Visual C++では、pictureBoxやtextBoxなどのツールがありますが、例えば、以下のようにpictureBoxの番号にあったファイルを表示する場合にはどのように書き込めばいいでしょうか? pictureBox1→1.bmpを開く pictureBox2→2.bmpを開く ・・・ pictureBoxn→n.bmpを開く nの数が少なければ、 pictureBox1->Image=Image::FromFile("C:/Users/1.bmp"); のように書いていけばいいですが、nの数が多くなれば、その分書き込まなければならないですし、 この番号をプログラム内でfor文などで指定できるようにするにはどのように書き込めばいいでしょうか?