![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっております。
VBAでオシロスコープのような表示をさせたいです。
継続的に発生する数値データをX方向に時系列に数値の量をY方向に
線でグラフのように表示させたいと思い、フォーム内にフォームの横
幅と同じフレームを置いて、このフレームにデータにあったY方向に
点表示させるループを作成しようと思います。
フォームに点表示させることは、できたのですが、フレームに表示さ
らせれず困っています。
フォームの場合は、フォームのハンドルを取得しハンドルからフォー
ムのデバイスコンテキストを取得する。
'Formのデバイスコンテキストを取得
F_Handle = FindWindow(vbNullString, UserForm1.Caption)
hF_DC = GETDC(F_Handle)
SetPixelV hF_DC、x座標、Y座標、色 で点表示されます。
フレームの場合、デバイスコンテキスト取得の記述方法がわかりません。
尚、表示したあと、フレームを左方向に移動させ、近接した2つ目の
フレームをフォームの左端から同時に左方向に移動させながら点表示
させることによってオシロスコープのような表示ができると思ってい
ます。
2つのフレーム(ラベルでもイメージでも、移動さえることができる
コントロールならなんでもいいです)のそれぞれのデバイスコンテキ
ストを取得する方法をお教えいただけないでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
最新のデータをまず最右端で描画し、
そのx座標を左にずらしていけば同じことができるのではないでしょうか?
例えば、
const X = 0, Y = 1, WIDTH = (画面の横幅)
Dim cnt = 0
‘data配列の初期化
Function Draw()
For i = 0 To cnt
data( i, Y ) = data( i, Y ) - 1
‘もし0以下なら表示しない
Next
‘データの取得
data(cnt, X) = (最新のデータ)
data(cnt, Y) = WIDTH
cnt = cnt + 1
‘点の描画
End Function
残念ながら私はフレームのコンテキストを取得する方法は知りません。
しかし、このようにすれば、(修正は必要ですが)今質問者さんが持っている情報だけでもやりたいことができるはずです。
再度のアドバイスありがとうございます。
お示し頂いた方法で、試してみました。1ループの中で全体の描画済の点
を1ピクセルだけシフトして再表示する方法でうまくいきました。
但し、シフトしたデータの全体の再表示前に前回表示した点を消す(フォ
ームのBackColorで点描画)する作業が必要になり、倍の作業時間がかか
ってしまうのと画面のチラツキが目立ちます。
もうしばらく、フォーム上のコントロールのデバイスコンテキストを取得
する方法をご教示いただける方の投稿をお待ちしたいと思います。
また、X1,Y1からX2,Y2へ線をひける(旧VB6のLINEのような)APIがあ
ればベストなのですが・・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】値を変更しながら...
-
時間短縮のために、テキストフ...
-
Excel VBA 選択範囲の罫線色の...
-
【ExcelVBA】インデックスが有...
-
Excel 範囲指定スクショについ...
-
VBA 複数条件の分岐処理の上手...
-
お世話になります。 Excel VBA...
-
Excel VBAでの数値の計算につい...
-
[vb.net] 起動したFrom2を閉じ...
-
Excel VBA 定義されたプロージ...
-
VBA 別ブックからコピペしたい...
-
Outlookの「受信日時」「件名」...
-
VBAの質問です、複数のテキスト...
-
VB.net(VB)で、フォームにExcel...
-
VBA 別ブックから条件に合うも...
-
Excel VBAで値を変えながら、pd...
-
Outlookにて既にウィドウ単体で...
-
【PowerPoint VBA】緑色の文字...
-
[VB.net] ボタン(Flat)のEnable...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレーム内に移動したい
-
Access2010でサブフォームのフ...
-
車の運転時のメガネ 縁なし(...
-
2倍速を等速動画に(車載動画)
-
VBで動的に作成したパネルの上...
-
フレームでのResponse.Redirect
-
シーケンス番号の初期値
-
トグルボタンの排他制御でご教...
-
KSR2 車体番号
-
めくれるカードの作成方法
-
ソーラーパネルのアルミフレー...
-
被写体のHSVを正確に取得(webca...
-
オシロスコープのような描写方...
-
gotoAndPlayで特定のフレームま...
-
【C++】IDirect3DSurfaceのディ...
-
ブラウザが揺れる(震動)させ...
-
富士通FMV-C600のHDD交換
-
モーショントゥィーンに関する...
-
Final Cut ProのDVD映像(チャ...
-
ドコモ携帯 N504isのフォトフ...
おすすめ情報