• ベストアンサー

グラフィックメソッドについて

VBでグラフィックコントロールで円を書いたときはうまく表示されるのに グラフィックメソッドで円を書いたときはうまく表示できません。 <詳細> 最初からグラフィックメソッドで円を描くとちゃんと表示される。 プログラムが存在しているところに追加で円を描こうとすると(円グラフ見たいの)うまくかけない。 form_loadの画面にcall で呼び出しても,描画が行われない。 これらのことから,表示するために何が必要なのか教えてください。 お願いします。

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

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.2

塗りつぶしですが、そのやり方でいいのですが、円弧では塗りつぶしは出来ません。円の場合だけです。 DrawWidth = 1 FillStyle = 0 FillColor = QBColor(7) Circle (CX, CY), Rad, QBColor(6) Line (CX + Rad, CY)-(CX, CY), QBColor(6) Line (CX, CY)-(CX, CY - Rad), QBColor(6)

nox_neo
質問者

お礼

円弧の場合は別の方法なんですか。 なるほど,これでできるようになりました。 すいませんでした,変数の説明も何も書かずに質問しちゃって。 読みづらかったのに…本当に有難うございました。

その他の回答 (2)

noname#2829
noname#2829
回答No.3

塗りつぶしでしたら、API関数を使ってみたら如何ですか? 使い方は至って簡単。下記例なら、指定した(x座標, y座標)からQBColor(i)にぶち当たるまで正に洪水の如く塗りつぶしてくれます。(塗りつぶす色は現在、フォームのFillcolorプロパティに設定されている色です) でわ。 Private Declare Function FloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long 'API関数の宣言 Dim ret As Long 'APIの戻り値 ------------------------------------------------------ ret = FloodFill(hdc, x座標, y座標, QBColor(i))

nox_neo
質問者

お礼

お返事有難うございました。 なんか,floodfillのfloodあたりが洪水って感じですね。 まだ,VBを始めたばかりなのでAPIがいかなるものなのかわからないので この例の意味するところはまったくわかりませんが,とりあえず代入してみると うまく塗りつぶしてくれました。 また,もうちょっとレベルアップしてからAPI関数なるものに挑戦します。 手持ちの参考書にもAPIについてなんかかいてあるし… またAPIに触ったときにも教えてください。

  • arata
  • ベストアンサー率49% (139/279)
回答No.1

フォームのAutoRedrawプロパティをTrueに設定してください。これで、円が出てくるはずです。 AutoRedrawについてはHELPを見てください。

nox_neo
質問者

補足

autoredrawにしたらちゃんと円が出てきました。 そこでもうひとつ質問いいですか? その中を塗りつぶしたいんですけれども,どうしたらいいんですか? DrawWidth = 1 FillStyle = 0 FillColor = QBColor(7) Circle (CX, CY), Rad, QBColor(6), Pi / 2, Pi / 2 + 3 * Pi / 2 '時計の枠の円 Line (CX + Rad, CY)-(CX, CY), QBColor(6) Line (CX, CY)-(CX, CY - Rad), QBColor(6) こんなんじゃダメですか?お願いします。

関連するQ&A

  • VB6.0で、グラフを複数表示させたいのですが。

    VB6.0で、Form1にある描画ボタンを押すたびに、 Form2のグラフを画面上に追加表示したいのですが、 同じフォームを複数表示させる方法がわかりません。 ご存知の方教えてください。 よろしくお願いします。 Form2は添付ファイルのような感じです。 ピクチャーボックスにグラフを描画します。

  • グラフの描画

    JBuilderを使っています。  グラフを表示させたいのですが、オブジェクトに何が適しているのか調べてもわかりません。現在、SwingのLabelを使っています。半信半疑なままプログラムに取り組んでいる状態です。アドバイスをお願いします。  また、VBのように”あるオブジェクトを指定して、そこにグラフを描画する”といったことのできるメソッドなどを知りたいです。お願いします。m(_ _)m

    • ベストアンサー
    • Java
  • .net chartでの積層棒グラフの接続・系列線

    VB2010(.net framework4.0)で、.net chartコントロールを使用し、グラフをブラウザに表示するプログラムを作成しております。 作成するグラフの中に、積層棒グラフ(積み重ね棒グラフ)があり、その各系列を結ぶ線(接続線や系列線と呼ばれるもの)を描画したいのですが、.net chartコントロールには該当するプロパティが無い様に見受けられます。(Webで色々と探ってみましたが、マッチしたページが見つかりませんでした) 折線グラフを重ねることでそれっぽい形にはなるのですが、綺麗には描画できず、この質問に至っております。 「実はこのプロパティで実現できる」や、「こうやって折れ線で描画したら綺麗にできる」など、お知恵をお貸し頂ければと思います。 よろしくお願いします。

  • VB6.0で複数フォームのグラフ描写ができません

    VB6.0でForm1にある描画ボタンを押すと、Form2が表示され、Form2のピクチャーボックスにグラフが描かれるコードを作っているところです。 ところが、Form2にはグラフが描かれません。 以下の簡単なコード(ピクチャーボックス2の背景を白色にする)も実行されません。 Form1にピクチャーボックスを作り、描画ボタンを押すとそこにグラフが表示されるようにしたところ、グラフが描かれました。 フォームは2つ表示させると問題があるのでしょうか? なにか考えられる原因を教えていただけないでしょうか。 Form1に記述しているコード Dim GraphForm As New Form2 GraphForm.Show Form2.Picture2.BackColor = vbWhite

  • VB.NET 2003 でグラフィックの表示。

    VB.NETをはじめたばかりです。 プログラムのスタート時、まずフォーム内でGraphicsオブジェクトを取得して表示させたいのですが、グラフィックに関する事項が表示しません。 一方、同じコード記述をButtonイベント内に記述し、ボタンONではグラフィック部分の描画が可能です。 フォーム内の記述だけでスタート時にグラフィックを表示するにはどのようにすればよろしいのでしょうか。 なお、フォーム内のテキスト表示、ラベルなどはイベントの発生なしでも表示します。

  • グラフを表示するとき「’~’メソッドは失敗しました。」エラー発生

    またお世話になります。VB初心者です。 折れ線グラフを表示する処理を作りました。 開発機では上手くいったので、他のPCでテストしたところ 下記のようなエラーになってしまいます。 「’~’メソッドは失敗しました。’~’オブジェクト」 但し、毎回エラーになるというわけではなく 正しく表示してくれる場合もあります。 エラーのときも「OK」をクリックすると 途中までの状態を表示する場合もあるし (これも一定の状態ではない) 終わってしまう場合もあります。 開発環境: Windows2000(SP4) VB6.0 処理内容:  1.フォームにOLEオブジェクトを作成(Microsoft Graph)  2.フォームを開くとき(Form_Load)に、グラフの値を設定する。    下記のようにグラフのデータシートに数値を一個ずつ    設定しています。(Graphがオブジェクト名です)  Me.Graph.object.Application.DataSheet.Cells(2, 1) = 設定値 このような方法をとっています。 システムの配布先によって環境はいろいろですし 当然のことですが環境に左右されてはいけないので エラーになるにしても状態が一定でない現状に 原因がつかめず困りきっています。 このやり方が良くないのかもしれませんね。 VBでグラフを作成する場合は、どのようにするのがベストなのでしょうか? どなたか対処法をご存知の方、ご教示お願いします。 この情報ではわからない等ありましたら補足いたします。 よろしくお願いいたします。

  • VB.netでのライン描画方法がわかりません

    VB6.0にて作成していたソースプログラムを.netアップグレードウィザードによりアップグレードして.netソースを作成しました。VB6.0ではPictureBox.Lineを利用してラインの描画をできていたようなのですが、.netにはLineメソッドが用意されていないらしくライン描画をどう行なえば良いかがわかりません。またVB6.0ではPictureBoxだったコントロールがアップグレードウィザードにて変換された後はPanelコントロールになってしまっています。 .netにもPictureBoxはあるのになぜPanelコントロールに置き換わってしまうのでしょうか? いま現在やりたいのは、あるファイルより取得したデータを用いて、VB.netのコントロール(Panel? PictureBox?)にライン描画をさせてやりたいのです。 あまり難しいことは出来ませんので簡単に描画する方法をわかる方がいましたら教えて頂けませんか? よろしくお願いします。

  • フォームの表示位置

    いつも拝見させていただき勉強しています。 VB初心者です。 親フォームから子フォームを、 loadメソッドとshowメソッドで、 よびだして表示させようとしているのですが、 フォームの位置をコントロールすることは できるのでしょうか? 画面中央に表示させたいのですが、 左上のほうに表示されてしまいます。

  • [C#]FormクラスのShowメソッドの挙動について

    C#のSystem.Windows.Forms.FormクラスのShowメソッドについて調べています。 Showメソッドを使うことで、モードレスでフォームを表示できます。 http://msdn2.microsoft.com/ja-jp/library/39wcs2dh.aspx 例えば、ボタンがクリックされたときに、モードレスでフォームを表示する場合は、以下のようになると思います。 // ボタンがクリックされたときにコールされるメソッド private void button1_Click(object sender, EventArgs e) { MyForm form = new MyForm(); // MyFormはFormの継承クラス form.Show(); } このとき、button1_Clickメソッドが終了しても、 つまり、変数formのスコープから処理が外れても、MyFormは表示され続けます。 別スレッドで表示しているのかと思いましたが、MyFormを表示してもスレッド数は変わりませんでした。 なぜ、変数formのスコープから処理が外れても、MyFormが表示され続けるのかわかりません。 どなたかご存知の方がいらっしゃいましたら、ご教授いただけると幸いです。 環境 : WindowsXP SP2, .NET Framework 2.0, Visual Studio 2005

  • ActiveX名.オブジェクト名.GETメソッド?

    お世話になります。 VB6SP6です。 ActiveXコントロールにはプロパティ・メソッド・イベントが設定できることがわかりました。 また、クラスを使用することで「オブジェクトの追加」が出来ることをこちらで教えていただきました。 そこで質問です。 メソッド名に「Get」を使用することは出来ますか? ActiveX名.オブジェクト名.GETという風に使用したいのですが。。。 ヒントなどでもいただければ助かります! よろしくお願いいたします。

専門家に質問してみよう