SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

仮想ネットワークの実装で学ぶTCP/IP

仮想ネットワーク実装でTCP/IPを学ぼう(7)
― GDI+と独自プロトコルの定義

仮想ネットワーク実装でTCP/IPを学ぼう(7)


  • X ポスト
  • このエントリーをはてなブックマークに追加

描画の基本

 .NETでフォームに描画をする際に、最初にするべきことはSystem.Drawing.Graphicsオブジェクトを取得することです。主な取得法は、System.Windows.Forms.FormクラスのCreateGraphicsメソッドを使用する方法と、PaintイベントのSystem.Windows.Forms.PaintEventArgsオブジェクトのGraphicsプロパティから取得する方法があります。

 取得後はSystem.Drawing.Graphicsオブジェクトに用意されている各種メソッドを使用して描画を行います。 他にも細かな注意点がありますが、文章では分かりにくいので、フォームに線を描画するサンプルプロジェクトDrawLineSampleを用いて解説します。

フォームに線を描画するサンプル(C#)
//重要な部分だけ抜粋
using System;
using System.Drawing;
using System.Windows.Forms;

public partial class Form1 : Form
{
    private void Form1_Paint( object sender, PaintEventArgs e )
    {
        //赤い斜線を惹く
        Graphics grfx = e.Graphics;
        Pen pen = new Pen( Color.Red );
        pen.Width = 10;
        PointF startPoint = new PointF( 0, 0 );
        PointF endPoint = new PointF( ClientSize.Width - 1 , ClientSize.Height - 1 );
        grfx.DrawLine( pen, startPoint, endPoint );
    }

    private void Form1_Resize( object sender, EventArgs e )
    {
        //正しく描画されるように再描画する
        this.Invalidate();
    }
}
サンプル実行画面
サンプル実行画面

 このサンプルには、描画処理において注意するべき点を3つ盛り込んでいます。

 1つ目に、線を描くオブジェクトを指定しなくてはなりません。.NETでは、PenもしくはBrushオブジェクトを使用します。詳しくは次項で解説します。

 2つ目に、描画位置は1ピクセルずれることを考慮せねばなりません。そのため、終了位置から-1を引いています。

 3つ目に、フォームのサイズが変更された時に再描画を指定しなくてはなりません。これを怠ると正しくフォームが描画されません。Invalidateメソッドをコメントアウトし、サンプルを実行してから、フォームのサイズを変更してみてください。正しく直線が描画されないことを確認できます。

次のページ
ブラシオブジェクトの概要

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
仮想ネットワークの実装で学ぶTCP/IP連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。座右の銘は温故知新で、新旧関係なく必要だと考えたものは全て学...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5170 2010/06/17 10:35

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング