• ベストアンサー

グラフィックス

以前は出来たんですが、勉強ノートが紛失してしまいました。 ヘルプで調べましたが、なかなか見つからないです。 たとえば、三個の円を描画して、 交わりの部分の色を変更したい。です。 VB2010の無料版です。

noname#151279
noname#151279

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

  • ベストアンサー
回答No.1

' とりあえずいい加減にやった。質問文中の図と上下逆だったりするので適当にソース弄って調整してください。 ' …なんかもっとすっきりしたコード書けそうなんだけどなあ Option Explicit On Option Strict On Imports System Public Class Q7371104 Public Shared Sub Main() Dim bmp As System.Drawing.Bitmap = New System.Drawing.Bitmap(500,500) Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmp) 'こっちのほうがわかりやすいかなと。 g.Clear(System.Drawing.Color.Black) Dim path1 As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath() Dim path2 As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath() Dim path3 As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath() path1.AddEllipse(0, 0, 200,200) path2.AddEllipse(100, 0, 200,200) '引数は整数らしいのでやむなく。 path3.AddEllipse(50,Convert.ToInt32(50 * Math.Sqrt(3)),200,200) ' Region.Excludeとかやってもいいけど面倒なので。 g.FillPath(New System.Drawing.SolidBrush(System.Drawing.Color.Red),path1) g.FillPath(New System.Drawing.SolidBrush(System.Drawing.Color.Blue),path2) g.FillPath(New System.Drawing.SolidBrush(System.Drawing.Color.Green),path3) Dim r1 As System.Drawing.Region = New System.Drawing.Region(path1) r1.Intersect(path2) Dim r2 As System.Drawing.Region = New System.Drawing.Region(path1) r2.Intersect(path3) Dim r3 As System.Drawing.Region = New System.Drawing.Region(path2) r3.Intersect(path3) Dim r4 As System.Drawing.Region = New System.Drawing.Region(path1) r4.Intersect(path2) r4.Intersect(path3) g.FillRegion(New System.Drawing.SolidBrush(System.Drawing.Color.Magenta),r1) g.FillRegion(New System.Drawing.SolidBrush(System.Drawing.Color.Yellow),r2) g.FillRegion(New System.Drawing.SolidBrush(System.Drawing.Color.Cyan),r3) g.FillRegion(New System.Drawing.SolidBrush(System.Drawing.Color.White),r4) g.Save() 'ファイル名とかはお好みでどうぞ bmp.Save("D:\test.bmp") End Sub End Class

noname#151279
質問者

お礼

ん。早い回答ありがとーございます。 先生ですか?学生さん? 素晴らしいですね。

関連するQ&A

  • 円と円の交わりを別の色にする

    office系のソフト(具体的にはpowerpointなのですが)で円1と円2を交わらせて、その重なった部分を円1、円2とは別の色をつけることはできますか? 資料で「メーカー」(円1・赤)と「消費者」(円2・青)の交わりの部分を「カスタマーサービス」(円1と円2の交わり部分・緑)、みたいな図を描きたいのです。 実はとても簡単な内容かもしれませんが、初心者なのでよろしくお願いします。

  • VB.NETのDLできるサイト

    VB.NETをこれから勉強しようと思いますが、ベーター版でもよいのですがどこか無料でDLできるサイトはあるでしょうか。

  • Graphicsクラスを使って描画履歴を残して、しかも色も選択しながら描画を行いたい

    以下のようなドロープログラムを作ってみたのですが 描画色を変更して再描画すると前の描画履歴が消えてしまいます 描画色を変更しても以前の描画履歴の消えないようにするには どのようにすればいいのでしょうか。 文字数制限によりプログラムをアップできませんでしたので一部を記述させていただきます。 グローバルなカラーオブジェクトを用意し class Globe{ static mycol=Color.white; } 二つのラベルを用意して Label red=new Label("■"); Label green=new Label("■"); ラベルそれぞれにマウスリスナーを登録して red.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ GLobe.mycol=Color.red; } }); green.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ GLobe.mycol=Color.green; } }); マウスドラッグによる座標取得を行い public void mouseDragged(MouseEvent e){ x=e.getX(); y=e.getY(); repaint(); } 二つの色を使い分けて描画できるようにしました。 public void update(Graphics g){ setForeground(Globe.mycol); g.fillOval(x-3,y-3,6,6); }

    • ベストアンサー
    • Java
  • VB と VB NET

    素人です。 VisualBasicを基礎から学ぼうと思っています。オークションでも15000円くらいするようですが、何か他に安く入手する方法はないですか?評価版とか・・・。 あるいは、まずはじめはExcelVBA上で勉強しようかとも考えています。何か良いアドバイスがあれば教えてください。 また、VB6とVBNETとはどのように違うものなのですか?やはりVB6から始めた方が良いですか? Microsoftで、VBExpress2005なるもののβ盤が無料配布されているようですが、これは全然違う代物なのでしょうか? 以上よろしくお願いします。

  • VB6.0日付の色を変更できるカレンダーはありますか?

    VB6SP6を利用しています。 MonthViewコントロール、MicrosoftCalendarコントロール と試してみたのですが、いろいろとヘルプを見てみたのですが、 どうやらこの二つのコントロールには、 カレンダー全体の背景やフォントの色を変更することはできても、 特定の日時のフォントや背景の色を変更することはできないようです。 カレンダーを表示して、祭日の部分のフォント色を変更したいのですが、 こういったことを実現するにはVB付属のコントロールでは不可能なのでしょうか? 不可能であればどういった解決手段が考えられるのでしょうか? 例えばカレンダーを自作するとなると、 一応うるう年の計算やツェラーの公式は知っていて、変数の中にならカレンダーを 表現できますが、いざフォーム上に表現とすると、 Labelコントロールを31個用意して強引にやることしか思いつきません。 今日は何度もここで質問してしまい本当に恐縮です。 朝からずっとVBの練習をしているのですが、わからないことが次から次へと 出てきます。

  • (evernote)ノート全てバックアップする方法

    久しぶりにevernoteのバックアップをとろうと、winPCでノートを全選択(ctrl+A)しようとすると、「選択できるノート数は100件までです」と表示され、すべてのノートが選択できません。 以前は全ノート選択ができていましたが、仕様変更になったのでしょうか。 ちなみにevernoteは無料版で使用しています。 無料版evernoteのノートをすべてバックアップとる方法をご存じの方、ぜひ教えてください! (100件ずつ選択していく方法以外でお願いします)

  • 実行状態中にオブジェクトの配置、サイズ変更はできますか?

    ご質問させていただきます。 Visual Basic 2005 を使っています。 やりたいこととは、 実行状態のフォーム(GroupBoxオブジェクト等)にTextBoxや線/円オブジェクトを置いたり、 そのオブジェクトをマウスクリックで”選択して”縦横のサイズを変更したり、位置を変更したいのです。 (できればマウス右クリックでプロパティの変更なども) 大まかに言えば、 実行状態のフォームに「デザイン状態の操作」や「Excel上の図形描画の操作」と同じようなことができるのでしょうか? (ツールボックスからデザインフォーム上へのオブジェクトの配置、配置したオブジェクトに マウスクリックをしてのサイズ変更、コピー&ペースト処理など) はじめは、直線や四角形を描画して期待通りのことができるかと思いましたが、 やはり描画した後にその線を”つまむ”ことができませんでした。 ちなみに、VB2005ではLineやShape系はないので、VB2005 PowerPacks2.0 を入れることで、 VB6でのLineコントロールみたいな動きはできました。 良いアドバイスありましたらお願いいたします。

  • チャートコントロール(MSChart)のフォント設定

    VB6.0でチャートコントロール(MSChart)を使いグラフを描画する事が出来ました。グラフを格好良くしようと思い背景を暗めの色にした所、グラフの文字が見えにくくなったため、フォントの変更を試みました。 縦横スケールのフォントは何とか変更することが出来たのですが、凡例のフォント設定が見つかりません。 ご存知の方いらっしゃいましたらご教授頂けないでしょうか。

  • 紙copi Liteから紙copi有料版

    紙copi Liteというソフトをみつけたのですが、無料版か有料版どちらにしようか迷っています。 使ってみないと分からないのでとりあえず無料版をダウンロードしてしばらく使って、満足できない部分がれば、有料版に変更しても良いのですが、無料版から有料版に変更したら、元の無料版で整理してた情報は消去されてしまうのでしょうか?有料版に引き継ぐことは可能でしょうか? 有料版と無料版、どこがどう違うのかは、表に書いてあったのですが、見てもイマイチ分からず、問題点など分かりやすく教えてほしいです 無料版でも便利に使えますでしょうか? 実際お使いの方のご意見教えてほしいです

  • VB2010でRichTextBoxでの一文字ずつ選択するにはどうすれ

    VB2010でRichTextBoxでの一文字ずつ選択するにはどうすればいいのでしょうか・・・? マウスでドラッグして選択範囲を作りその部分だけフォントで色変更を行いたいのですが、それ以前に一文字ずつドラッグできず一気にすべてが選択範囲となってしまいます。 例えば「あいうえお」というのがあってドラッグして「あ」だけを選択しようとすると5文字全てが選択されてしまうということです。 TextBoxでは一文字ずつ選択できるのですがRichの方でないと選択部分のみの色変更は出来ないとのことらしいので・・・。 どなたか解決策をお教えください。