- ベストアンサー
C#でオリジナルのマウスポインタを追加する方法
- C#で開発中のツールにオリジナルのマウスポインタを追加する方法を調べています。
- 参考URLのページでは、System.ReflectionとSystem.Resourcesを使用してマウスポインタを追加しています。
- しかし、リソースに画像を登録する方法については明示されておらず、エラーメッセージが表示されています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
具体的な手順はすでに回答ついているのでいいとして… >リソースにはjpegで書いた画像aを追加しました。 画像ファイルではアイコンやマウスカーソルには使用できないかと。 アイコンエディタとかフリーでありますからそういうのでアイコンファイル(カーソルファイル)を作成してください。
その他の回答 (1)
- anmochi
- ベストアンサー率65% (1332/2045)
とりあえずそのC#プロジェクトの名前空間をWindowsFormApplication1とする。 まずリソースの追加だが、これはプロジェクトを右クリック→追加(D)→新しい項目(W)...→アセンブリ リソース ファイルで行う。そうするとResource1.resxというファイルが追加される(ファイル名を指定しなかった場合)。で、これがC#というかMicrosoft.Netの名前空間的にはWindowsFormsApplication1.Resource1という識別子になる。 で、Resource1を開くとResource1.resxというタイトルのリソース一覧窓になるのでリソースの追加(R)→新しいアイコンの追加(C)を選ぶ。そうするとIcon1.icoという埋め込みリソースファイルができる。 その上で、 ~~~~~~~~ 開発中のツールに using System.Reflection; using System.Resources; と private void Form1_Load(object sender, EventArgs e) { // ↓自分自身(EXE)のアセンブリを取得 Assembly asm = Assembly.GetExecutingAssembly(); //ResourceManagerオブジェクトの作成(リソースResource1を追加してある) // ↓アセンブリからWindowsFormApplication1.Resource1という名前のリソースを取得 // ↓つまり、ここの第1引数は「WindowsFormApplication1.Resource1」という文字列を指定している // ↓あなたのプログラムでは"a"になってたけどそれだと「WindowsFormApplication1a」になるわけだ ResourceManager rm = new ResourceManager(asm.GetName().Name + ".Resource1", asm); // リソースよりIcon1.icoを取得する Icon icon1 = (Icon)rm.GetObject("Icon1"); Cursor cur = new Cursor(icon1.Handle); this.Cursor = cur; } ~~~~~~~~ とすると(EXEから見て)自分自身のアセンブリからリソースクラスを取得してアイコンを読むという動作になる。 以上が参考サイトの解説だけど・・・・EXEの中にアセンブリ リソース ファイルを入れて、その中にアイコンファイルを入れてそれを使いたいだけなら以下のようにすればいいよ。リフレクションも使う必要ない。 ~~~~~~~~ private void Form1_Load(object sender, EventArgs e) { Cursor cur = new Cursor(Resource1.Icon1.Handle); this.Cursor = cur; } ~~~~~~~~ アセンブリ リソース ファイルResource1をプロジェクトに追加すると、自動的にEXEの名前空間(正確にはプロジェクトのプロパティの中にある「規定の名前空間」)内にResource1というクラスが出来上がり、そこにIcon1.icoを追加すると、プログラム中からResource1.Icon1にアクセスすることでアイコンを取得する事ができる。
お礼
詳しく説明有り難うございました。
お礼
なるほど!ありがとうございます。