画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

マルチフォーム BCB では親 Form から子 Form を呼び出す ことが出来る。 Unit1.cpp に子 From のヘッダー Unit2.h を インクルードしておく 親 Form から子 Form のメソッド –Show() –ShowModal() を使うことで呼び出せる。
初年次セミナー 第13回 2次元グラフィックス(1).
上手なプレゼンのための ワンポイント・アドバイス
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
GridLayout オブジェクト(省略)
プログラミング演習3 李 亜民クラス 第2回 ラスタライズ.
図の挿入 ●方法1 ①図を挿入する位置にカーソルを置く。 ②「挿入」メニュー →「図」 → 「ファイルから」とクリックする。 ③挿入するファイルを選択し、「挿入」をクリックする。 ●方法2(書式までコピーされるので、ファイルサイズが大きくなる) ①挿入する図をコピーする。 ② 挿入する位置にカーソルを移動し、ツールバーまたは右クリックメニューの「貼り付け」をクリックする。
図の挿入 ●方法1 ①図を挿入する位置にカーソルを置く。 ②「挿入」タブ ⇒「図」 → 「ファイルから」とクリックする。 ③挿入するファイルを選択し、「挿入」をクリックする。 ●方法2(書式までコピーされるので、ファイルサイズが大きくなる) ①挿入する図をコピーする。 ② 挿入する位置にカーソルを移動し、ツールバーまたは右クリックメニューの「貼り付け」をクリックする。
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
TMenu メニューバーを用いた操作のための コンポーネント.
パソコン教室(作図編) ワークフロア清柳.
ファイルやフォルダを検索する ①「スタート」→「検索」→「ファイルとフォルダ」とクリックする。
Applet 岡部 祐典 鈴木 敬幸.
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
C#によるWindowsFormApplication入門
Iアプリプログラミング その1  鳥居秀徳.
第四回 VB講座 画像とタイマー.
第20章 Flyweight ~同じものを共有して無駄をなくす~
プログラミング演習3 第2回 GUIの復習.
Unity, C# 移動するモデルの位置を 指定した位置へ自動修正
基礎プログラミング演習 第10回.
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
プログラミング演習3 第3回 ミニプロジェクト.
フォームのデザイン Labelコントロール変更点 (name): labelDate Font Size: 18pt
ローカル変数とグローバル変数 ローカル変数  定義された関数内だけで使用できる変数 グローバル変数 プログラム全体で使用できる変数.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
EclipseでWekaのAPIを呼び出す
TCanvas BCB:TCanvasクラスでグラフィックを扱う。 TFormなどもプロパティとして持っている。
プログラミング演習3 第2回 GUIの復習.
Jakarta Struts (2) ソフトウェア特論 第11回.
諸連絡 USBメモリの販売について 日時:6月23日(月)授業開始前 商品:プリンストン社製32MBのUSBメモリ
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
Windows XP  ウィルスバスターインストール方法.
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
オブジェクトのプロパティ プロパティとは? あたかもそういうメンバー変数(フィールド)がそのクラスに存在するかのように見せる仕組み!
もっと詳しくArrayクラスについて調べるには → キーワード検索
ソフトウェア制作論 平成30年11月21日.
Garoon on cybozu.com 2014年9月版 新機能 Copyright© 2014 Cybozu.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
ここに 表題や引用文が入る 背景への図の使用とキャプションへのテクスチャの適用 (中級)
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
第8回放送授業.
GUIプログラミングの基本=イベント イベントとは イベントの例 ウィンドウやウィンドウ内のパーツ(ボタン・スクロールバーなど)に発生する
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
メンバとメソッド C言語の構造体 変数の集まり C#言語のクラス + それを処理する関数の集まり フィールド または メンバ変数 メンバ
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
情報実習I (第15回) 木曜4・5限 担当:北川 晃.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
3.テキストボックスによる データ入力 データ入力と表示のプログラム.
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化 描画の基本になる 紙 原点 (0,0) X方向 Y方向 300ピクセル (デフォルト値) ペン Pen オブジェクト 線を引く 色,幅(線の太さ),線スタイル(点線など)等の多数のプロパティを持っている Brush オブジェクト 図形を塗りつぶす  単色で塗りつぶすSolidBrush  画像パターンで塗りつぶすTextureBrush  グラジエーション効果で塗りつぶすLinearGradientBrush 実際に描画可能な領域 292x273ピクセル (デフォルト値の場合)

Paintハンドラの例 Graphicsオブジェクトを Paintハンドラ内で取得 緑・赤・黄色で太さが1ピクセルのPenオブジェクトを作成 private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; Pen GreenPen = new Pen(Color.Green); Pen RedPen = new Pen(Color.Red); Pen YellowPen = new Pen(Color.Yellow); g.DrawLine(GreenPen, 10, 10, 200, 200); g.DrawEllipse(RedPen, 50, 50, 30, 30); g.DrawPie(YellowPen, 120, 100, 150, 150, 15, 120); Pen RedTickPen = new Pen(Color.Red, 10); g.DrawRectangle(RedTickPen, 150, 20, 100, 50); SolidBrush blueBrush = new SolidBrush(Color.Blue); SolidBrush brownBrush = new SolidBrush(Color.Brown); g.FillPie(blueBrush, 20, 80, 100, 100, 15, 120); g.FillEllipse(brownBrush, 150, 100, 50, 50); } 緑色ペンで座標値(10,10)から(200,200)へ直線を引く 赤色ペンで,左上隅の座標が(50, 50)で幅30,高さ30の正方形に内接する円を描く 赤色で太さ10ピクセルのペン 赤色で太いペンで左上(150,20),幅100,高さ50の長方形を描く 青と茶色の単色ブラシ 左上隅の座標が(20, 80)で幅100,高さ100の長方形に内接する円のうち15度から120度の扇形を青色ブラシで塗りつぶす 茶色ブラシで,左上隅の座標が(150, 100)で幅50,高さ50の正方形に内接する円を塗りつぶす 描画メソッドの種類やその詳細については Graphicsクラスをキーワード検索

コントロールで図形描画を制御する 作図ボタンを押すと,入力した値の10倍 の長さ(ピクセル)の太線を引く public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.NumericUpDown numericUpDown1; private System.Windows.Forms.Button button1; /// <summary> /// 必要なデザイナ変数です。 /// </summary> private System.ComponentModel.Container components = null; private int length = 0; ・・・略 private void button1_Click(object sender, System.EventArgs e) length = (int) (numericUpDown1.Value); this.Refresh(); } private void Form1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; g.DrawLine(new Pen(Color.Blue, 20), 0, 20, length*10, 20); (int) ( x ) で変数xの型をint型に変換する numericUpDown.ValueはDecimal型のプロパティなのでそのままではint型変数に代入できない Form1の描画領域を一旦消去して,Paintハンドラを強制的に呼び出すメソッド 太さ20ピクセルの青色ペンで直線を描画 直線の長さを表わす変数 NumericUpDownコントロールのインスタンス numericUpDown1 200ピクセル 作図ボタンのクリック イベントハンドラ 変数 length Paintイベントハンドラ 変数値の変更 変数値の参照 図形描画を制御する仕組み

ダイアログパネルを使う方法(二つのウィンドウを使う方法) 作図ボタンを押すと,入力した値の10倍 の長さ(ピクセル)の太線を引く データ/入力メニューのクリックでForm2が開き,Form2で入力した値の20倍の長さの太線をForm1ウィンドウ上で引く Form1:メインウィンドウ Form2:ダイアログパネル プロジェクトにForm2を追加するには VisualStudioのメニューで,「ファイル/新しい項目の追加」を選択 「Windowsフォーム」を選択して開く OKボタンのクリックでForm2が閉じ,Form1で太線描画 キャンセルボタンのクリックでForm2が閉じるが,Form1の太線は変化しない

ダイアログパネル(Form2)の設定とプログラム public class Form2 : System.Windows.Forms.Form { /// <summary> /// 必要なデザイナ変数です。 /// </summary> private System.ComponentModel.Container components = null; private System.Windows.Forms.NumericUpDown numericUpDown1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private int length = 0; public Form2() // // Windows フォーム デザイナ サポートに必要です。 InitializeComponent(); // TODO: InitializeComponent 呼び出しの後に・・・ } private void button1_Click(object sender, System.EventArgs e) length = (int) (numericUpDown1.Value); public int Length get { return length; } Form2のプロパティの変更点 ControlBox: False SizeGripStyle: Hide AcceptButton: button1 CancelButton: button2 Enterキーを押した時,button1をクリックしたのと同じ効果を持たせる Escキーを押した時,button2をクリックしたのと同じ効果を持たせる numericUpDown1 長さの値を覚えておく変数 button1のプロパティ変更点 Text: OK DialogResult: OK この設定により,button1をクリックすると自動的にウィンドウが閉じる button1のクリックハンドラ button1がクリックされたら,NumericUpDown1の値を変数lengthに記憶しておく. button1のクリックで自動的にForm2は閉じる button2のプロパティ変更点 Text: キャンセル DialogResult: Cancel この設定により,button2をクリックすると自動的にウィンドウが閉じる パブリックプロパティ Form2の外部から変数lengthの値を取得するために用いる

メインウィンドウ(Form1)の設定とプログラム メニューを追加. メニューの選択でForm2のダイアログパネルが開くようにする. public class Form1 : System.Windows.Forms.Form { private System.ComponentModel.Container components = null; private System.Windows.Forms.MainMenu mainMenu1; private System.Windows.Forms.MenuItem menuItem1; private System.Windows.Forms.MenuItem menuItem2; private Form2 form2; public Form1() // // TODO: InitializeComponent 呼び出しの後に・・・ form2 = new Form2(); }   // ・・・省略 private void Form1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; g.DrawLine(new Pen(Color.Blue, 20), 0, 20, form2.Length * 10, 20); private void menuItem2_Click(object sender, System.EventArgs e) if (form2.ShowDialog(this) == DialogResult.OK) this.Refresh(); オブジェクトForm2のインスタンスform2をプライベートメンバとして登録 form2インスタンスの初期化 form2のLengthプロパティでform2ダイアログパネルの入力値が取得できるので,その長さの10倍の太線を描画 メニューのクリックハンドラ メニューがクリックされたら,form2を開く form2のShowDialog()メソッドでform2のウィンドウが開く. form2のウィンドウが閉じるとShowDialog()メソッドが終了する.この時,メソッドの返す値がDialogResult.OKなら,OKボタンが押されている. OKボタンでform2ウィンドウが閉じているなら,form1ウィンドウを再描画 注:ウィンドウが閉じてもform2オブジェクトが消滅するわけではない