網絡学習管理 プログラミング超入門・C#編 C# exercises (6) Graphics and Paint

C# exercises (6) Graphics and Paint

Graphicsオブジェクト

ウインドウの内部を表示したり描き直したりする必要が生ずると、Formに「Paint」というイベントが発生し、Paintプロパティに設定されているメソッドが呼び出されるようになっています。

このPaintイベント用のメソッドは、これまでのクリック時のイベント用メソッドなどとは微妙に違いがあります。これは以下のように定義されます。

private void メソッド名 (object sender, PaintEventArgs e)
{
    ……ここに描画処理を書く……
}

第1引数に、イベントが発生したオブジェクトが渡されるのは同じですが、第2引数に渡されるのはSystem.Windows.Formsパッケージの「PaintEventArgs」というクラスのインスタンスです。これは、描画のためのイベント情報を管理するもので、描画に必要なオブジェクトなどもこの中にまとめられているのです。
中でも重要なのが「Graphics」というオブジェクトです。これはSystem.Drawingパッケージに用意されているクラスで、これはGDI+(Graphics Device Interfaceというグラフィック描画のための機能の強化版)を利用して画面にさまざまな描画を行うための機能を提供します。

Paintイベント

フォームのプロパティをイベントに切り替えて、Paintイベントを探し、メソッド名Form1Paintを入力

スクリーンショット 2016-05-27 11.31.11

Paintイベントで渡されるPaintEventArgsインスタンスから以下のようにして取り出します。

Graphics 変数 = 《PaintEventArgs》.Graphics;

Penと図形の描画

  • g.DrawLine(p,75,75,50,50);  // 直線
  • g.DrawEllipse(p,75,75,50,50);  // 円
private void Form1Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    Pen p = new Pen(Color.Red); // Penインスタンスの作成
    g.DrawEllipse(p,75,75,50,50);
}

Penと多角形を描く

private void Form1Paint(object sender, PaintEventArgs e)
{
 Graphics g = e.Graphics;
 Pen p = new Pen(Color.Red); // Penインスタンスの作成
 Brush b = new SolidBrush(Color.Blue); // Brushインスタンスの作成

 //直線で接続する点の配列を作成
 Point[] ps = {new Point(100, 0),
     new Point(158, 180),
     new Point(4, 69),
     new

Point(195,

 69),
     new Point(41, 180)};
 //多角形を描画する
 g.DrawPolygon(p, ps);
}

 

Brushと塗りつぶし図形

private void Form1Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    Brush b = new SolidBrush(Color.Blue); // Brushインスタンスの作成
    g.DrawEllipse(p,75,75,50,50);
}

実例

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace MyFrmApp
{
    public class MyForm : Form
    {
             
        public MyForm()
        {
            this.Width = 300;
            this.Height = 200;
            this.Paint += myframe_paint;
        }
             
        private void Form1Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen p = new Pen(Color.Red); // Penインスタンスの作成
            Brush b = new SolidBrush(Color.Blue); // Brushインスタンスの作成
            g.FillRectangle(b,50,50,50,50);
            g.DrawEllipse(p,75,75,50,50);


            //直線で接続する点の配列を作成
            Point[] ps = {new Point(0, 0),
            new Point(150, 50),
            new Point(80, 100),
            new Point(100, 150)};
            //多角形を描画する
            g.DrawPolygon(p, ps);
        }
    }
}

スクリーンショット 2016-05-27 11.29.37

演習

五芒星を描く

220px-Pentagram.svg

star

***

五芒星(ごぼうせい、英: pentagram)または五芒星形・五角形・型・型五角形・正5/2角形は、互いに交差する、長さの等しい5本の線分から構成される図形で型正多角形の一種である。 正五角形に内接し、対称的である。 一筆書きが可能。

 

middle_1310314010

Pentacle_2.svg

 参考

  • http://qiita.com/tomato360/items/a59f2ee4df4fd2f24227

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

C# exercises (3) Common ControlC# exercises (3) Common Control

ディジタル時計の作成 Create Digital Clock デザイン ツールボックスの中で、 –コモンコントロール「TextBox」 –コンポーネント「Timer」 Formにドラッグ&ドロップする Timerのプロパティ(値)を変更 timer1のプロパティ Enabled⇒ True (Enabled:タイマーを実行する) Interval⇒ 1000 (Interval:タイマーの実行間隔, 1000⇒1000ms(1秒))   TextBoxのプロパティ […]

C# exercises (7) Puzzle GameC# exercises (7) Puzzle Game

今回作るのは、イメージを読み込んで利用するパズルゲームです。イメージファイルを読み込むとそれを 9 分割し、ランダムに混ぜます。 プレビューのイメージをフォーム上クリックして配置、すべて正しい場所に配置できればクリアです。   フォーム作成 サイズ:500 x 400 背景色:適当 PictureBox配置 (Name) : PlayBox Size :        300 x 300 BackColor […]

C# exercises (c) Web3 HttpClientC# exercises (c) Web3 HttpClient

Visual Studio community 2015 アカウントについて (学内専用) WebBrowser (基本) Form(自動操作) HttpClient ←今週 REST & JSON いままで、WebBrowser コントロールを利用して、 Webサイトを表示と操作プログラムを作りました。 今回は直接 http 通信に HttpClient クラスを使用 するプログラムを作ります。 HTTPとは […]