網絡学習管理 プログラミング超入門・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 (e) Open DataC# exercises (e) Open Data

オープンデータを利用したWebアプリ作成 オープンデータとは オープンデータ(Open Data)とは、特定のデータが、一切の著作権、特許などの制御メカニズムの制限なしで、全ての人が望むように利用・再掲載できるような形で入手できるべきであるというアイデアである。 オープンデータの利用 「LinkData.org」には、誰でも無償で利用でき、商用利用も可能なオープンデータが豊富にまとまっています。 都道府県別で探したり、人気ランキングやキーワードを指定しての検索もできるので、自分が興味のあるデータを探すのも簡単でしょう。 LinkDataのサイト内には、全国の「お城データ」や「道の駅データ」、「避難所データ」、「補助金まとめデータ」、「さくら名所データ」…など、意外とユニークで面白いデータがまとまっているので、うまく利用すれば楽しいWebアプリが作れそうです。 「ダウンロード」の項目下に、「その他の形式のAPIリストを表示」というリンクがあるのでクリックします。 すると、外部APIとしてデータが取得できるURLが一覧表示されます。 そこで「JSON」形式のURLをコピーして、実際にブラウザのアドレスバーに入力してみましょう! あとは、このデータをC#を使って、自分のWebアプリに組み込めば良い。 グループ課題 オープンデータを利用したWebアプリの作成 オープンデータの選択 郵便番号検索 天気予報検索 その他 オープンデータをブラウザで確認 C#を使って、オープンデータWebアプリの作成

C# exercises (a) Web1 WebBrowserC# exercises (a) Web1 WebBrowser

Visual Studio community 2015 アカウントについて (学内専用) 今週から、4回分けてWebについて学習する WebBrowser (基本) WebBrowser (自動操作) HttpClient REST & JSON WebBrowser コントロール WebBrowser コントロールを利用した、シンプルなアプリケーションの作成手順を紹介します。 Visual Studioを起動し、新しいWindows Formプロジェクトを作成します。 WebBrowserコントロールの配置 […]

C# exercises (1) GuidanceC# exercises (1) Guidance

Windowsアプリを作る C#について 開発しやすく,高機能なプログラミング言語 様々なプログラミング言語の良いところを組合せて作った. プログラムのミス(バグ)が出にくい 学習しやすい 比較的簡単に自分が作成したいWindowsアプリを作れる Windowsアプリの開発ではC#を使うことが標準になってきている。 この課程について Microsoft Visual C# 2015利用 とても難しいWindowsアプリの開発をできるだけ簡単にして、いろいろな高度な機能を教えたい。 少しでもプログラミングの楽しさが伝わるように工夫したい。 演習中心:できるだけ見やすく工夫します。 簡単ながら、応用しやすく、かつ、興味がもてるような題材を考えてきます。 試験:レポート 評価:出席+演習+レポート *** […]