[.NET]関数(y=f(x))のグラフをImageに描画する [Programming .NET Tips]
[ポイント]
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
(1)PictureBoxに、一次関数(y=2x)のグラフを描画する例
・上記で定義したメソッド(DrawFunction)の使用例を以下に示します。
まずは、一次関数(y=2x)を定義します。
・適当なイベント処理内で、DrawFunctionメソッドを呼ぶ処理を記述します。
DrawFunctionメソッドに渡す引数は、
・グラフを描画するImageインスタンス
・一次関数(y=2x)のデリゲート (※デリゲートとはメソッドの参照を格納する変数、型です。)
・X座標の範囲(From、To)
です。
[デリゲートについて]
.NETでは、メソッドの参照を変数に格納し、変数経由でメソッドに
アクセスすることができます。 (デリゲート変数)
この例では、一次関数の定義をデリゲート変数に格納し、DrawFunctionメソッドに渡します。
メソッドの参照はAddressOf演算子で取得します。
デリゲート変数はFuncHandler型で定義し、fnc1と関連付けします。
実行結果
(2)PictureBoxに、二次関数のグラフを描画する例
・デリゲート変数の内容を、二次関数のデリゲートに置き換えるだけで、描画内容を変更できます。
実行結果
(3)PictureBoxに、三角関数のグラフを描画する例
・同様に三角関数も描画可能です。
実行結果
(4)PictureBoxに、平方根の関数のグラフを描画する例
・平方根の関数も同様です。
実行結果
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
| |
[VB.NET]関数のグラフをImageに描画する例 |
(1)PictureBoxに、一次関数(y=2x)のグラフを描画する例
・上記で定義したメソッド(DrawFunction)の使用例を以下に示します。
まずは、一次関数(y=2x)を定義します。
| |
[VB.NET]例:一次関数の定義 |
・適当なイベント処理内で、DrawFunctionメソッドを呼ぶ処理を記述します。
DrawFunctionメソッドに渡す引数は、
・グラフを描画するImageインスタンス
・一次関数(y=2x)のデリゲート (※デリゲートとはメソッドの参照を格納する変数、型です。)
・X座標の範囲(From、To)
です。
[デリゲートについて]
.NETでは、メソッドの参照を変数に格納し、変数経由でメソッドに
アクセスすることができます。 (デリゲート変数)
この例では、一次関数の定義をデリゲート変数に格納し、DrawFunctionメソッドに渡します。
メソッドの参照はAddressOf演算子で取得します。
デリゲート変数はFuncHandler型で定義し、fnc1と関連付けします。
| |
[VB.NET]DrawFunctionメソッドの呼び出し |
(2)PictureBoxに、二次関数のグラフを描画する例
・デリゲート変数の内容を、二次関数のデリゲートに置き換えるだけで、描画内容を変更できます。
| |
[VB.NET]関数を二次関数で定義した場合 |
(3)PictureBoxに、三角関数のグラフを描画する例
・同様に三角関数も描画可能です。
| |
[VB.NET]関数を三角関数で定義した場合 |
(4)PictureBoxに、平方根の関数のグラフを描画する例
・平方根の関数も同様です。
| |
[VB.NET]関数を平方根で定義した場合 |
コメント 0