![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
OpenNI(キネクトセンサー)のサンプルプログラムは、C#のパネルにbitmapを描画し続けるのですが、
描画中、そのパネルのマウスイベントが生じない(無視されている?)ようです。マウスの位置から
補助線を引いたりしたいのですが、描画中にマウスイベントが取得できる方法をご存知の方、お願いします。以下サンプルソースそのままです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using OpenNI;
using System.Threading;
using System.Drawing.Imaging;
namespace SimpleViewer.net
{
private unsafe void ReaderThread()
{
DepthMetaData depthMD = new DepthMetaData();
while (this.shouldRun)
{
try
{
this.context.WaitOneUpdateAll(this.depth);
}
catch (Exception)
{
}
this.depth.GetMetaData(depthMD);
lock (this)
{
Rectangle rect = new Rectangle(0, 0, this.bitmap.Width, this.bitmap.Height);
BitmapData data = this.bitmap.LockBits(rect, ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
ushort* pDepth = (ushort*)this.depth.DepthMapPtr.ToPointer();
// set pixels
for (int y = 0; y < depthMD.YRes; ++y)
{
byte* pDest = (byte*)data.Scan0.ToPointer() + y * data.Stride;
for (int x = 0; x < depthMD.XRes; ++x, ++pDepth, pDest += 3)
{
byte pixel = (byte)this.histogram[*pDepth];
pDest[0] = 0;
pDest[1] = pixel;
pDest[2] = pixel;
}
}
this.bitmap.UnlockBits(data);
}
this.Invalidate();
}
}
private readonly string SAMPLE_XML_FILE = @"../../../Data/SamplesConfig.xml";
private Context context;
private ScriptNode scriptNode;
private DepthGenerator depth;
private Thread readerThread;
private bool shouldRun;
private Bitmap bitmap;
private int[] histogram;
}
}
No.1ベストアンサー
- 回答日時:
求めていることの解答にはなりませんが,
とりあえず,いま,Kinect for Windows SDK 1.5で試してみたら,
Panelに深度画像を表示し続けても
普通にマウスイベントは取得できました.
ご参考まで.
この回答への補足
解決しました!!!! ( 多少疑問は残りますが。)
サンプルのPanelView のマウスイベントは受け取れませんが、フォームのマウスイベント
は機能しました。toro_nekomataさんはフォームのClickイベントを使いましたか?
DockがFillの設定でフォームいっぱいだったので気づきませんでした。
イベントの発生を勉強しないといけませんね。ありがとうございました。
ありがとうございます。
private void panelView_Click(object sender, EventArgs e)
{
textBox1.Text = System.Windows.Forms.Cursor.Position.X.ToString();
}
センサーはXtionProLive なのですが、それとは関係ないですよね。
たったこれだけのコードで、ファイルに書き出したら、、、、同じ、ためしに
このイベントの中にブレークポイントを置いてみると、デバッガが停止もしません。
つまりマウスイベントが起きていないかどこかにいってしまっている。これを
確認できる知識は持っていません。
同じフォームに描画されている以外のパネルを設置してみると
ちゃんとマウス座標が取得できるのでなにか描画に特別な部分があるのかと
思ったのです。すみませんが、お使いのソースを教えていただけませんか?
同じことを試してみたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- VPN 何これ 1 2022/04/19 01:32
- 英語 下記の英文を日本語に訳して、その意味を教えてください。 1 2023/03/09 14:13
- 英語 下記の英文の日本語訳をお願いします。 1 2023/03/02 10:01
- ビデオカード・サウンドカード DellのPC(xp)に、サウンドカードドライバ(内蔵)をインストールしたい。 1 2023/07/31 11:32
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVAでの背景画像表示
-
getGraphics()の意味を教えて...
-
ID3DXSprite::Drawメソッドに関...
-
Windows OS/Mozilla系ブラウザ...
-
DirectXのスプライト機能で3D回転
-
JTableの特定セルの背景色を変更
-
インターフェースとトレイトっ...
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
C# インスタンスの破棄
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
変数名の付け方
-
VB.NETでのnothing の意義について
-
パワーポイントのVBAでテキスト...
-
同一パッケージにあるクラスが...
-
配列のメソッド
-
配列の重複する値とその個数を...
-
他のファイルの変数参照
-
VBAのWindowオブジェクトとWork...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVAでの背景画像表示
-
VB.NET フォーム上に描いたグ...
-
VB.NETのSendMessageを教えてく...
-
C# DataGridView のCellPaintin...
-
Javaで文字の角度を変えて表示...
-
canvasで表示されてる画像を1...
-
画面のちらつきの原因が知りた...
-
Labelコントロールの背景をグラ...
-
重なった要素上でのイベントで...
-
java.awt.peer?
-
Canvas等の図形を移動する時,直...
-
OpenLayersの描画を固定で表示...
-
ID3DXSprite::Drawメソッドに関...
-
SwingとEDT(イベントディスパッ...
-
C#のGraphicsクラスについてです。
-
複数画像表示切り替え Visual c++
-
Androidのフォントサイズ(SP)と...
-
Androidで画像の中で指定した範...
-
描画処理が実行されない
-
JavaScript でスライダーを作る...
おすすめ情報