開発環境 Microsoft Visual Studio Community 2017
実行環境 Microsoft Windows 10 Home (64-bit)
プロジェクトの種類 Visual C# / Windows フォーム アプリケーション (.NET Framework)
プロジェクト名 region

Form1.cs
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
 
namespace region
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            var paths = new GraphicsPath[3];
            var r = 60;
            var s = 80;
            for (var i = 0; i < paths.Length; i++)
            {
                var rad = (Math.PI / 180) * (120 * i + 30);
                var x = (float)(150 + Math.Cos(rad) * r);
                var y = (float)(150 + Math.Sin(rad) * r);
 
                var path = new GraphicsPath();
                path.AddEllipse(x - s, y - s, 2 * s, 2 * s);
                paths[i] = path;
            }
 
            {
                var rgn1 = new Region(paths[0]);
                rgn1.Exclude(paths[1]);
                rgn1.Exclude(paths[2]);
                var rgn2 = new Region(paths[1]);
                rgn2.Exclude(paths[2]);
                rgn2.Exclude(paths[0]);
                var rgn4 = new Region(paths[2]);
                rgn4.Exclude(paths[0]);
                rgn4.Exclude(paths[1]);
                var rgn7 = new Region(paths[0]);
                rgn7.Intersect(paths[1]);
                rgn7.Intersect(paths[2]);
 
                var pic = pictureBox1;
                pic.Image = new Bitmap(pic.Width, pic.Height);
                var g = Graphics.FromImage(pic.Image);
                g.Clear(Color.FromArgb(0x40, 0x40, 0x40));
 
                g.FillRegion(new SolidBrush(Color.FromArgb(0x00, 0x00, 0xff)), rgn1);
                g.FillRegion(new SolidBrush(Color.FromArgb(0xff, 0x00, 0x00)), rgn2);
                g.FillRegion(new SolidBrush(Color.FromArgb(0x00, 0xff, 0x00)), rgn4);
                g.FillRegion(new SolidBrush(Color.FromArgb(0xff, 0xff, 0xff)), rgn7);
            }
 
            {
                var rgn = new Region(paths[0]);
                rgn.Xor(paths[1]);
                rgn.Xor(paths[2]);
 
                var pic = pictureBox2;
                pic.Image = new Bitmap(pic.Width, pic.Height);
                var g = Graphics.FromImage(pic.Image);
                g.Clear(Color.FromArgb(0x40, 0x40, 0x40));
 
                g.FillRegion(new SolidBrush(Color.FromArgb(0xff, 0x80, 0x00)), rgn);
            }
        }
    }
}
 

最終更新:2018年05月16日 05:45
添付ファイル