トップページ > 記事閲覧
画像の座標と描画について
名前:くわ 日時: 2017/01/10 19:08

いつもこのサイトにはお世話になっています。 画像の座標に値をプロットしていくような感じで画像上にグラフを描画することはできませんか? 案としては、画像の各座標に、グラフの数値範囲に合わせて数値を設定しておき、値をプロットするときにそこの座標を参照できるのではないかと考えています。 しかし、思いついてはいても実際にどういった手法でやればいいのか検討がつきません。 画像にグラフを描く具体的な方法について、もし何かあれば教えていただけると幸いです。
メンテ

Page: 1 |

Re: 画像の座標と描画について ( No.1 )
名前:管理人 日時:2017/01/11 00:28

画像に対して描画する方法はあります( MakeScreen で作成したグラフィックハンドルを SetDrawScreen の引数にすることで描画対象とすることができます ) ただ、すみません、お書き込みの内容ではどのようなことをされたいのか想像しきれませんでした 実現されたいことについてもう少し詳しくご説明していただけないでしょうか?
メンテ
Re: 画像の座標と描画について ( No.2 )
名前:くわ 日時:2017/01/11 15:08

例えば、プログラムで2種の値を何個も算出していって、それぞれをx軸・y軸としてプロットしていけばグラフが出来上がりますよね? それで、画像の座標をx軸・y軸に当てはめることで、画像上に計算値をプロットできないかと思っています。 わかりにくい説明ですみません。
メンテ
Re: 画像の座標と描画について ( No.3 )
名前:管理人 日時:2017/01/12 03:21

> 例えば、プログラムで2種の値を何個も算出していって、それぞれをx軸・y軸としてプロットしていけばグラフが出来上がりますよね? なんとなく分かる気がしますが、「プロット」という言葉に馴染みがないので正しく理解できていないかもしれません 求めた2D座標を線分で繋ぐと折れ線グラフになりますが、「プロット」という言葉には具体的な表現方法( 点であるか、 線分で繋ぐか、棒グラフにするか )の定義は無いのでしょうか? > それで、画像の座標をx軸・y軸に当てはめることで、画像上に計算値をプロットできないかと思っています。 すみません、やはり「プロット」という言葉の意味が理解できていないので、 何を仰っているのかを正しく理解することができません… 画像上に折れ線グラフなどを描画したいということでしょうか?
メンテ
Re: 画像の座標と描画について ( No.4 )
名前:くわ 日時:2017/01/12 10:48

一応自分としては、「プロット」というのは観測値などを点でグラフに描き入れる作業のことだという風にとらえています。 紛らわしい表現を使ってしまいすみません。 > 画像上に折れ線グラフなどを描画したいということでしょうか? はい、その通りです。画像上に値を点として打って、その点同士を線でつなぐようにしてグラフを作成したいと考えています。
メンテ
Re: 画像の座標と描画について ( No.5 )
名前:管理人 日時:2017/01/13 02:17

ご返答ありがとうございます、なんとなく理解できた気がします 試しに2種類の値を MakeScreen で作成した画面に折れ線グラフで書くというプログラムを 組んでみたのですが、くわさんのご希望の処理はこのようなものでしょうか? #include "DxLib.h" // 値の数 const int ParamNum = 4 ; // 2種類の値 int Param1[ ParamNum ] = { 30, 120, 210, 270 } ; int Param2[ ParamNum ] = { 10, 200, 100, 150 } ; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int Screen ; int i ; // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先の画面を作成 Screen = MakeScreen( 300, 300 ) ; // 描画先を作成した画面に変更 SetDrawScreen( Screen ) ; // 作成した画面全体を白で塗りつぶす DrawBox( 0, 0, 300, 300, GetColor( 255,255,255 ), TRUE ) ; // 2種類の値を線分で結んだ描画を行う for( i = 0 ; i < ParamNum - 1 ; i ++ ) { DrawLineAA( Param1[ i ], Param2[ i ], Param1[ i + 1 ], Param2[ i + 1 ], GetColor( 0, 0, 0 ) ) ; } // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // 作成した画像を描画 DrawGraph( 0, 0, Screen, FALSE ) ; // 裏画面の内容を表画面に反映する ScreenFlip() ; // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ
Re: 画像の座標と描画について ( No.6 )
名前:くわ 日時:2017/01/13 16:19

ありがとうございます!おかげで目的の作業ができそうです。 最後に1つだけ、質問させてください。 画面上にグラフを描くことはできました。この状態の画面を画像のハンドルとして扱うことってできますか? たとえば、     GHandle = LoadGraph( "画像のパス" ) ; とやれば、この画像をほかの処理にかけることができます。これと同じように、描画した画面を画像ハンドルとして扱いたいです。
メンテ
Re: 画像の座標と描画について ( No.7 )
名前:管理人 日時:2017/01/14 00:07

> この状態の画面を画像のハンドルとして扱うことってできますか? はい、No.5 のプログラムでも MakeScreen で作成した画面のハンドル( Screen ) を画像ハンドルとして DrawGraph で裏画面に描画しています通り、MakeScreen で作成した画像ハンドルは LoadGraph で 読み込んだ画像のハンドルと同じように扱うことができます
メンテ
Re: 画像の座標と描画について ( No.8 )
名前:くわ(解決) 日時:2017/01/16 15:10

管理人様のおっしゃるとおり、ちゃんと画像ハンドルとして読み込まれていました。 おかげでやりたいことがちゃんとできました。 ここまでお付き合いくださり、本当にありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存