
いつもお世話になっております。
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ランキング
-
段ボールみたいな材質でできて...
-
テキストボックスに表示される...
-
flashをgifアニメーションに【m...
-
MC内のフレームをrootにペース...
-
動画から、1(いち)フレーム...
-
スクロールバーの非表示+繰り返し
-
フレームのターゲット設定がう...
-
フレームページを更新すると、...
-
フレームでページ分かれていて...
-
ぐるぐるーぷ。
-
大元のタイムラインの変数を初...
-
音ズレが…
-
フラッシュの枠を消したい
-
リンク設定時の「ターゲット」...
-
HPビルダーで境界線なしの方法
-
ホームページビルダーの使い方
-
ビルダー2001:フレームの保存
-
JAVASCRIPT等での フレーム間...
-
動画の遅延再生プログラム
-
gotoAndPlayで特定のフレームま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレーム内のオプションボタン...
-
段ボールみたいな材質でできて...
-
フレーム内に移動したい
-
VBで動的に作成したパネルの上...
-
Flash 初心者
-
エクセルVBA フレーム内のイベ...
-
複数のFlashを一つにまとめる
-
cisco catalystのトラブルシュ...
-
「フレームのような」ページを...
-
2Dゲーム作成する際、アニメー...
-
ドロップフレームの計算をエク...
-
radio bottanをチェックすると...
-
ActionScriptに関しての質問
-
Access2010でサブフォームのフ...
-
netscape6の同一ページ内リンク...
-
DIBからAVIファイル作成
-
フレームラベルを使った複数指...
-
車の運転時のメガネ 縁なし(...
-
コマンドボタンのクリックによ...
-
ボタンを押した後、ムービーが...
おすすめ情報