オリジナルのマウスポインタを表示 – プログラミング – Home

オリジナルのマウスポインタを表示
 
通知
すべてクリア

[解決済] オリジナルのマウスポインタを表示


Osada
 Osada
(@Osada)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

こんばんは。

C#であるコントロールにマウスを重ねたときに、独自に作成したマウスポインタを
表示させることは可能でしょうか。

たとえば、ピクチャーボックスにマウスを重ねた時、スポイトのようなマウスポインタ
を表示させたい場合、どのように作り込めば実現できるのでしょうか。

ご存知の方いらっしゃいましたら、ご教授を宜しくお願いします。


引用未解決
トピックタグ
よねKEN
 よねKEN
(@よねKEN)
ゲスト
結合: 22年前
投稿: 19
 

PictureBoxクラス(Controlクラスを継承)にはCursorプロパティがありますので、
そこに設定したいマウスカーソルを指定すればよいと思います。


返信引用
Osada
 Osada
(@Osada)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

よねKENさん、ありがとうございます。

私の質問が分かりにくかったようです。
確かにPictureBoxにはCursorプロパティは存在しカーソルを変更することができますが
独自(自作)したマウスカーソルを指定できない状況です。
このようなデフォルトで用意されているマウスカーソル以外を使用したい場合は
どのように使えばよろしいのでしょうか。

ご存知でしたらご教授願います。


返信引用
よねKEN
 よねKEN
(@よねKEN)
ゲスト
結合: 22年前
投稿: 19
 

>独自(自作)したマウスカーソルを指定できない状況です。

Cursorクラスのコンストラクタで新たなインスタンスを生成して、
それを設定すればよいと思いますが、それではダメでしょうか?
ファイルパスを取るもの、リソースから読み込む、その他あります。
#未検証です。


返信引用
Osada
 Osada
(@Osada)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

以下のような方法でとりあえず使用できますが、この方法では exeファイルとは
別にカーソルファイルも用意して置かなければなりません。
pictureBox1.Cursor = new Cursor(Cursor.cur);

そこで、リソースとしてカーソルを追加したのですが、リソースに追加した
カーソルを使用する方法が分かりませんでした。
この場合、どのようにリソースを使用すればよろしいのでしょうか。

毎回申し訳ありませんが、ご存知でしたら、ご教授をお願いします。


返信引用
よねKEN
 よねKEN
(@よねKEN)
ゲスト
結合: 22年前
投稿: 19
 

#私は開発環境を持っていないのでSDKでやってます。
#後、C#でなく、VB.NETをやっているので下記のコードは、
#投稿画面上でキーワードを読み替えて書いています。文法ミスがあったらすいません。

コンパイル時のオプションで「/resource:Cursor.cur」を付けてコンパイルし、
カーソルファイルをEXEに取り込んだ場合、下記のようなコードで読み込めます。

//ファイル先頭
using System.Reflection

// 読み込み処理
Assembly asm = Assembly.GetExecutingAssembly();
Picture1.Cursor = new Cursor(asm.GetManifestResourceStream(4WAY01.CUR));

また、コンパイルオプション「/resource」のヘルプによれば、
・開発環境で取り込んだリソースの場合
・Resgen.exeで生成したリソースファイルを使用している場合
System.Resources 名前空間のクラスが使えるようです。
詳細は「ResourceManager クラス」を見るようにとも書いてあります。
そちらの方はご自身でお確かめ下さい。


返信引用
よねKEN
 よねKEN
(@よねKEN)
ゲスト
結合: 22年前
投稿: 19
 

訂正です。
>Picture1.Cursor = new Cursor(asm.GetManifestResourceStream(4WAY01.CUR));

上記のコード中の「4WAY01.CUR」は「Cursor.cur」と読み替えて下さい。
#4WAY01.CURは自分の実験で使ったファイル名です(^^;


返信引用
Osada
 Osada
(@Osada)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

> コンパイル時のオプションで「/resource:Cursor.cur」を付けてコンパイルし、
> カーソルファイルをEXEに取り込んだ場合、下記のようなコードで読み込めます。

すみません、自力でコンパイルオプションについて色々と調べてみましたが、
どうしても「/resource:Cursor.cur」の設定方法が分かりませんでした。

ソリューションエクスプローラ上にCursor.curが追加されていれば良いので
しょうか?それとも、どこかでコンパイルオプションを設定する場所があるのか
分からない状態です。

ちなみに、このまま実行すると
Picture1.Cursor = new Cursor(asm.GetManifestResourceStream(Cursor.cur));
の行で、以下のエラーが発生してしまいます。
---エラー情報(ここから)---
'System.ArgumentNullException'のハンドルされていない例外が system.windows.
forms.dllで発生しました。
追加情報:値をNullにすることはできません。
---エラー情報(ここまで)---

度々申し訳ありませんが、ご存知でしたらご教授を宜しくお願いします。


返信引用
Osada
 Osada
(@Osada)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

やっと実現できました。
よねKENさんと書籍をヒントに結局以下の方法で実現できました。

リソースにマウスカーソルを追加し、追加したマウスカーソルのプロパティ画面の
ビルドアクションに「埋め込まれたリソース」を選択し、以下のソースで何とか
自分オリジナルのマウスカーソルを呼び出す子とに成功しました。

Assembly asm = Assembly.GetExecutingAssembly();
pictureBox1.Cursor = new Cursor(asm.GetManifestResourceStream(asm.GetName
().Name + .Cursor.cur));

よねKENさん、有難うございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました