PowerPoint プレゼンテーション

Similar documents
PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

C#の基本

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

スライド 1

Microsoft Word - VB.doc

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

C#の基本2 ~プログラムの制御構造~

医用工学概論  Medical Engineering (ME)   3年前期の医用工学概論実習と 合わせ、 医療の現場で使用されている 医用機器を正しく安全に使用するために必要な医用工学(ME)の 基礎知識を習得する。

スライド 1

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

Microsoft Word - サンプル _図面編集_.doc

グラフィックス

線を描く 線ツールをクリックする 原点 ( 青 緑 赤の 3 つの軸が交わるところ ) をクリックする 水平方向 ( 赤い軸と緑の軸がある面 ) にカーソルを動かしクリックする 原点とクリックした点の間に黒い線が描画される 垂直方向にカーソルを動かす 青い線が表示され 青い軸上 と表示される 青い線

(一日目前半)2017SV演習C++CLI

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2

PowerPoint プレゼンテーション

< F2D D E6A7464>

14.event-handling

スライド 1

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

産能大式フローチャート作成アドインマニュアル

ルーレットプログラム

Microsoft Word - Grspes…~…j…}…j…–…A…‰6.0.doc

バスケットボール

基本作図・編集

基本作図・編集

ブロック パニック

Microsoft Word - 平成サロン09年2月21日一筆箋作成.doc

このうち ツールバーが表示されていないときは メニューバーから [ 表示 (V)] [ ツールバー (T)] の [ 標準のボタン (S)] [ アドレスバー (A)] と [ ツールバーを固定する (B)] をクリックしてチェックを付けておくとよい また ツールバーはユーザ ( 利用者 ) が変更

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

画像参照画像送り 5 画像下部に再生ボタンが表示されます 再生ボタンをクリックすると 自動コマ送りされます 1

基本作図・編集

-24- Word 2016 操作手順 第 5 章ワープロ A 24 ページを このページに差し替えてください ( 6 透かしの設定 を変更 ) 1 頁 3. タブ 6 字 とリーダー ( 任意 ) の設定 ( ウ )~( オ ) は 図 2 を参考に正しいものを記述してください ( 図 2) タブ

Microsoft PowerPoint - kougi2.ppt

ブロック崩し風テニス

Processingをはじめよう

医用工学概論  Medical Engineering (ME)   3年前期の医用工学概論実習と 合わせ、 医療の現場で使用されている 医用機器を正しく安全に使用するために必要な医用工学(ME)の 基礎知識を習得する。

Autodesk Revit Structure 2014

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

20180308森の日県南支部 林

Word2007 Windows7 1 パンジーを描こう 暮らしのパソコンいろは 早稲田公民館 ICT サポートボランティア

Word 実技 実習 編 別冊-6 ページを このページに差し替えてください (*Word 2016では [ ページレイアウト ] タブは [ レイアウト ] タブと名称変更されました ) 1 頁 Word 2016 ( 課題 と ) W ワード ord 2016 の画面構成 [ フ

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

Microsoft PowerPoint - kougi4.ppt

目次 1. はじめに Excel シートからグラフの選択 グラフの各部の名称 成績の複合グラフを作成 各生徒の 3 科目の合計点を求める 合計点から全体の平均を求める 標準偏差を求める...

W o r d で案内状の作成 1. Word の起動 Word を起動しましょう スタート ボタンをクリック すべてのプログラム をポイント Microsoft Office をクリック Microsoft Word2010 をクリック ワードが起動します 2. ページ設定用紙の余白を設定しましょ

Windows (L): D:\jyugyou\ D:\jyugyou\ D:\jyugyou\ (N): en2 OK 2

Excelで血圧記録表を作成しょう!

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

Microsoft Word - 簡単な計算と作図.doc

目次 Ⅰ. はじめに P.2 Ⅱ. 作業手順 P.3 Ⅲ. 画面説明 P.4 Ⅳ. 単位とグリッドの設定 P.5 Ⅴ. 基板外形作図 P.6 Ⅵ. ランド作成 P.11 Ⅶ. 配線 P.16 Ⅷ. 輪郭線抽出 P.21 Ⅸ. 外形加工線抽出 P.24 Ⅹ. いろいろな作図機能 P.27 Ⅺ. いろい

Microsoft Word - gnuplot

_責)Wordトレ1_斉木

Microsoft Word - zoom-it-man.doc

Microsoft Word - 92.doc

1 SmartArt の機能を使って, 要点を図形にまとめましょう Power Point2007 から, SmartArt という機能が追加されました これは, 図形を使って, 内容の要点 ( キーワード ) などを, 美しく, わかりやすく提示するための機能です この機能を使うときは, 内容に合

エクセルによる数値計算と化学への応用

2 / 26 平成 26 年 4 月 11 日 ( 金 ) 午後 1 時 9 分 Visual C Express の使用法 ( 東海大学理学部物理学科 ) 無償で利用できる開発環境 (Windows XP 以降 ) Visual Studio 2010 Express

Microsoft Word - 教科書大1a第9週2013.docx

(Microsoft Word - Excel\216\300\217K\212\356\221b1.doc)

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

目次 ページ 1. 本マニュアルについて 3 2. 動作環境 4 3. ( 前準備 ) ライブラリの解凍と保存 5 4. モデルのインポート 6 5. インポートしたモデルのインピーダンス計算例 8 6. 補足 単シリーズ 単モデルのインポート お問い合わせ先 21 2

Microsoft Word - 205MSPowerpoint2010

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート

暮らしのパソコンいろは 早稲田公民館 ICT サポートボランティア

Transcription:

1 03 簡単なゕニメーションを実現してみる正弦波描画プログラム 1 今回作成するゕプリケーションの概要 正弦波が円周上の点の動きから描かれることを表すプログラム 行われる動作 [1] 起動すると円と正弦波が描かれる [2] マウスで移動するスラダを動かすと円周上の点と正弦波上の点が連動して動く [3] ボタンをクリックすると 連動している二つの点がそれぞれ円周上と正弦波上を自動的に移動する 正弦波描画プログラム これを使用者とコンピュータの関係で描くと このバーをマウスでドラッグして左右に動かすことができる ( スライダ ) [ 使用者 コンピュータ ] 円と正弦波を描画して見せる [ 使用者 コンピュータ ] スラダを移動 [ 使用者 コンピュータ ] 円と正弦波を描画し 同じ位相の場所に点を描く [ 使用者 コンピュータ ] 自動 ボタンをクリック [ 使用者 コンピュータ ] 円と正弦波を描画し 連動して円周上と正弦波上の点を移動させる 自動 ボタンの表示を 停止 に変更 [ 使用者 コンピュータ ] 停止 ボタンをクリック [ 使用者 コンピュータ ] 円と正弦波を描画し 連動して円周上と正弦波上の点を停止させる 停止 ボタンの表示を 自動 に変更

2 自動的に動かすためには関数を一定の時間間隔で呼び出し その関数で処理 この処理を行うのが Timer コントロール 必要なコントロールは次の通り Button コントロール ( 自動 と 停止 を行う ) PicuterBox コントロール ( 円と正弦波を表示する ) HScrollBar コントロール ( ドラッグで値を変更するスラダ ) Timer コントロール ( 一定時間間隔で処理 ゕニメーションのために必要 ) コントロール配置の概略図 正弦波描画プログラム 正弦波を描画する PictureBox コントロール 円を描画する PictureBox コントロール Timer コントロールはフォーム上に配置されない 点を表示する位相を決めるスラダ (HScrollBar コントロール ) ここをクリックすると位相が自動的に変化し ゕニメーションが開始される (Button コントロール )

3 2 Visual Studio 2010 の起動と新規プロジェクトの作成 前回やったとおり Visual Studio 2010 を起動 [1] スタート [2] すべてのプログラム [3] Visual Studio 2010 のフォルダ [4] Visual Studio 2010 のゕコン 新規プロジェクトも前回の手順で作成 [1] メニュー フゔル [2] 新規作成 [3] プロジェクト [4] Visual C# [5] Windows フォームゕプリケーション [6] プロジェクト名 を入力 ( 今回は JKJ03) [7] 参照 をクリックして プロジェクトを保存する場所を選択 [8] ソリューションのデゖレクトリを作成 のチェックははずす [9] OK をクリック 3 コントロールの配置 PictureBox コントロール 2 個 Button コントロール 1 個 HScrollBar コントロール 1 個をツールボックスからドラッグ & ドロップして配置 場所は Size プロパテゖを設定してからで調節するので 適当に配置 Timer コントロールは後で配置 ( 円と正弦波が表示され スラダで連動できるようになってから ) PictureBox コントロール HScrollBar コントロール Button コントロール

4 下の図の通り コントロールのプロパテゖを設定し 配置を調整する Name Text Form1 正弦波 Name pbcircle Size 200, 200 Name pbwave Size 360, 200 Name Text btnauto 自動 Name Maximum 360 hsbphase HScrollBar コントロールの位置と大きさは pbwave の幅にあうように配置する このあたりをドラッグすると フォームの大きさを変えることができる だいたいこれぐらいの大きさにする 4 描画の準備のプログラムの入力 (1) ソリューションエクスプローラーの Form.cs で 右クリック (2) コードの表示をクリック

5 (3) Form.cs のプログラムが表示される (4) メンバ変数を宣言する部分に 以下のプログラムを入力する今回は PictureBox コントロールが 2 つあるので 2 つづつ入力 public partial class Form1 : Form Bitmap bmpcircle; Graphics gracircle; Bitmap bmpwave; Graphics grawave; Pen penaxis; Pen penwave; Pen pennow; // 座標軸を描くペン // 円 波形を描くペン // スクロールバーが示す位相の場所を表す円を描くペン double Radius; // 円の半径 = 正弦波の振幅 int Theta; // スクロールバーが示す値と連動させる public Form1() この部分を入力 (5) コンストラクタの部分に以下の部分を入力 public Form1() InitializeComponent(); bmpcircle = new Bitmap(pbCircle.Width, pbcircle.height); pbcircle.image = bmpcircle; gracircle = Graphics.FromImage(pbCircle.Image); bmpwave = new Bitmap(pbWave.Width, pbwave.height); pbwave.image = bmpwave; grawave = Graphics.FromImage(pbWave.Image); penaxis = new Pen(Color.Black, 1); penaxis.dashstyle = System.Drawing.Drawing2D.DashStyle.Dash; // 軸は点線で引きたい penwave = new Pen(Color.Black, 1); pennow = new Pen(Color.Blue, 2); Theta = 0; Radius = 80; この部分を入力

6 5 フォームの再描画ベントの作成 再描画イベントとは重なって背面にいたウゖンドウが表へ出てきたり 最小化されていたウゖンドウが再び表示されたりして 隠されてたウゖンドウが再び描画されても 表示がされてなかったり 欠けたりしないよう この再描画が必要なときにベントを発生させている この時生じるベントを再描画ベントといい これはウゖンドウの重なりや最小化から表示されたり ウゖンドウの大きさが変更されたりしたきに呼び出される 再描画ベント時に呼び出される関数でグラフゖックを書いておくと ウゖンドウの変化してもそのグラフゖック表示を維持してくれる 図形 正弦波 図形図形 正弦波 1. ウィンドウが重なっている 図形 2. 上のウインドウを動かす 下のウィンドウの重なっている部分には何も表示されない ( 先の表示が消される ) 図形 3. 再描画イベントが発生 4. 再描画イベントでウィンドウ全部の描画を行うようにしてある だから 重なって表示されなかった分も表示

7 (1) Form1.cs [ デザン ] をクリックして コード入力のタグからフォームのデザンするタグへ戻る (2) From1 のプロパテゖを選ぶ ( フォームのコントロールの配置してない場所をクリック ) (3) プロパテゖウゖンドウのカミナリのところをクリックしてベント一覧を表示 (4) ベント一覧の中から Paint を探す (5) Paint の右側のテーブルをクリックしてカーソルが点滅した状態にする (6) [Enter] キーを押す (1) 左クリック (2) コントロールの配置されていないフォームの余白をクリック (3) カミナリをクリック (4) Paint をさがす (5) Paint の右側のセルをクリック (6) Paint の右側のセルでカーソルが点滅していたら [Enter] キーを押す (7) Form1_Paint という関数が作られる この Form1_paint が再描画のときに実行される関数である private void Form1_Paint(object sender, PaintEventArgs e)

8 6 フォームの再描画時のプログラムの入力 今回は再描画時にほとんどのグラフゖック描画を実施する private void Form1_Paint(object sender, PaintEventArgs e) double xs, ys; // 線の始点 double xe, ye; // 線の終点 double xz, yz; // 座標の原点の PictureBox 上の座標 // 円を描くほうのピクチャボックス pbcampus から描く // 描画領域を白色でクリゕ gracircle.clear(color.white); // pbcircle の中心の座標を求める xz = pbcircle.width / 2; yz = pbcircle.height / 2; // 座標軸を描く gracircle.drawline(penaxis, (float)xz, 0, (float)xz, pbcircle.height); gracircle.drawline(penaxis, 0, (float)yz, pbcircle.width, (float)yz); // 極座標形式で円を描く xs = xz + Radius * Math.Cos(0); ys = yz - Radius * Math.Sin(0); for (int th = 0; th < 360; th++) double rth = Math.PI * th / 180.0; xe = xz + Radius * Math.Cos(rth); ye = yz - Radius * Math.Sin(rth); gracircle.drawline(penwave, (float)xs, (float)ys, (float)xe, (float)ye); xs = xe; ys = ye; この部分を入力 この段階で実行すると 右図のように 円だけ描かれる

9 続けて次の部分を入力する xs = xe; ys = ye; 前のページで入力した続きから // ゕニメーションする点を描く xs = xz + Radius * Math.Cos(Theta / 180.0 * Math.PI); ys = yz - Radius * Math.Sin(Theta / 180.0 * Math.PI); gracircle.drawellipse(pennow, (float)(xs - 4), (float)(ys - 4), 9, 9); この部分を入力 これは位相 Theta の点を描いてる Theta は初期値は 0 だから 横軸上に青い丸が表示されている スクロールバーやタマーでこの Theta を変更することで青い丸を移動させる この段階で実行すると 右図のように 円周上に青い丸が描かれる

10 続けて次の部分を入力する 今度は正弦波を表示する部分である 前のページで入力した続きから // 正弦波を描くほうのピクチャボックス pbwave を描く // 描画領域を白色でクリゕ grawave.clear(color.white); // グラフの原点は右端 縦方向は真ん中 xz = 0; yz = pbwave.height / 2; // 縦軸 = 0 になる線を引く grawave.drawline(penaxis, 0, (float)yz, pbwave.width, (float)yz); // 正弦波を描く xs = 0; ys = yz - Radius * Math.Sin(0); for (int th = 0; th < 360; th++) double rth = Math.PI * th / 180.0; xe = xz + th / 360.0 * pbwave.width; ye = yz - Radius * Math.Sin(rth); grawave.drawline(penwave, (float)xs, (float)ys, (float)xe, (float)ye); xs = xe; ys = ye; この部分を入力 この段階で実行すると 右図のように 正弦波も表示する

11 続けて次の部分を入力する 正弦波上に Theta の位相の点を表示する部分である 前のページで入力した続きから // ゕニメーションする点を描く xs = xz + Theta / 360.0 * pbwave.width; ys = yz - Radius * Math.Sin(Theta / 180.0 * Math.PI); grawave.drawellipse(pennow, (float)(xs - 4), (float)(ys - 4), 9, 9); この部分を入力 この段階で実行すると 右図のように 正弦波上にも青い丸が描かれる

12 7 スクロールバー変更時のプログラムの入力 スクロールバーをマウスでスラドさせるとスクロールバーの持つ値が変更になる このスクロールバーが変更されたベントのとき 呼び出される関数を次の手順で生成する (1) Form1.cs [ デザン ] をクリックして コード入力のタグからフォームのデザンするタグへ戻る (2) スクロールバーをダブルクリック (1) 左クリック (2) スクロールバーをダブルクリック (3) 関数 hsbphase_scroll が生成されるので 次の 2 行を入力する private void hsbphase_scroll(object sender, ScrollEventArgs e) Theta = hsbphase.value; Refresh(); この 2 行を入力 Theta = hsbphase.value; hsbphse のスクロールのある位置から得られる値を Theta へ Refresh( ); フォームの再描画ベントを強制的に呼び出す

13 (4) コントロールの配置とプログラムの入力が行われたら ためしに動作させてみよう 8 タマーの配置 水平スクロールバーをスライドすると円周と正弦波の上の が移動する 自動 ボタンをクリックすると青い が自動的に円と円周上を移動するように作りたい このような場合には ある一定の時間ごとに特定の関数を呼び出す Timer コントロールを利用する timer1.start( ) で timer1 の動作を開始 timer1.stop( ) で timer1 の動作を停止 timer1_tick 関数を実行 timer1_tick 関数 timer1_tick 関数を実行を実行 timer1.iterval timer1.iterval timer1.iterval timer1.iterval Timer コントロール timer1 の動作

14 (1) Form1.cs [ デザン ] をクリックして コード入力のタグからフォームのデザンするタグへ戻る (2) ツールボックスから Timer コントロールを探す (3) ツールボックスの Timer をドラッグして フォームの設計画面上で離す (2) Timer を探す (1) 左クリック (3) ドラッグしてフォームでマウスを離す なぜかここに表示される 9 タマーの操作 自動 ボタンをクリックするとタマーが動作を開始するボタンの表示を 停止 に変更 停止 ボタンをクリックするとタマーが動作を停止するボタンの表示を 自動 に変更というふうにプログラムが動くようにしたい ボタンをクリックしたときのベントであるので btnauto をダブルクリックして生成される関数 btnauto_click に次のプログラムを入力する ダブルクリック

15 private void btnauto_click(object sender, EventArgs e) if (btnauto.text == " 自動 ") btnauto.text = " 停止 "; timer1.interval = 10; timer1.start(); else btnauto.text = " 自動 "; timer1.stop(); // 単位は [ms] この部分を入力 10 タマーが動作したときの処理 タマーが動作したとき 青色の丸が表示される位相 Theta を増やし 再描画すれば青丸が移動したゕニメーションが実現できる また スクロールバーも同じように移動するようにする スクロールバーの移動はプロパテゖ Value に値を代入すれば行われる しかし 最大値 Maximum を超えるとエラーになるので 最大値 Maximum を超えると最初値 Minimum になるように処理する (1) Form1.cs [ デザン ] をクリックして コード入力のタグからフォームのデザンするタグへ戻る (2) timer1 をダブルクリック (1) 左クリック (2) ダブルクリック

16 自動的に生成された timer1_tick 関数に次の部分を入力する private void timer1_tick(object sender, EventArgs e) if (hsbphase.value < hsbphase.maximum) hsbphase.value += 1; else hsbphase.value = hsbphase.minimum; Theta = hsbphase.value; Refresh(); この部分を入力 11 完成 これで今回のプログラムは完成以下の動作が行われるか確認 プログラムを実行すると 円と正弦波が表示される ( 青丸は位相 0 の場所に表示される ) 水平スクロールバーを移動させると それに合わせて円と正弦波上の青丸が移動する 自動 ボタンをクリックすると青丸が移動を開始する 位相が最大値になったら 最小値になって移動を続ける ( 正弦波の青丸が右端までいったら左端から出てくる ) 停止 ボタンをクリックすると 青丸の移動が停止する

17 12 まとめ フォームの再描画ベントを使う ウゖンドウが再表示されたときに発生するベント 再描画 強制的に再描画ベントを起こさせるには Refresh(); タマーと組み合わせるとゕニメーションが簡単に作ることができる 水平スクロールバー マウスによる操作で値を簡単に変更できるコントロール 変更したときにベントが生じる プロパテゖ Value を変更すると スクロールバーも移動する 垂直スクロールバー VScrollBar というものもある タマー 一定の時間間隔でなにかをやりたいとき ( ゕニメーションなど ) に使う フォーム上には表示されないコントロール 時間間隔はプロパテゖ Interval で決まる 単位は ms = ミリ秒 メソッド Start() で利用開始 Stop() で利用停止 今回使ったコントロール Button コントロール ( クリックすることで何かベントを生じさせる ) PictureBox コントロール ( 画像を表示したり 描画を管理したり ) HScrollBar コントロール ( 数値をマウスでコントロール 水平方向 )NEW! Timer コントロール ( 一定の時間間隔でベントを発生 )NEW! 13 追加課題 1 正弦波のほうに目盛として 30 度ごとに縦の点線を描くまた 円のほうも 30 度づつの変化がわかるように点線で円を区切る半径を描く 2 位相が 120 度 240 度ずれている正弦波を 2 本追加し それぞれ 円上と正弦波上に位相の変更と連動する赤丸と緑丸を追加する 3 振幅 ( 円の半径 ) を変更するスクロールバーを追加し 振幅 ( 円の半径 ) を変更可能にする