2011-07-23 4 views
6

デフォルトのカーソルは「矢印」カーソルで、矢印の左上(ポイントは)は他のコントロールをクリックまたは相互作用する部分です。ポインティング部分をどのように変えて矢の尾を言うことができますか?C#カーソルのクリック/ポインティング位置を変更しますか?

私が持っているものは、カスタムカーソル(ビットマップイメージ)です。これは16x16サイズの円で、その中心がポインタになります。私は下向きの左向きの16x16の点を指す別のカスタムの矢印のようなカーソルを持っていて、カーソルの左下隅をポインタにします。私はカーソルクラスにはこれのためのプロパティがあると思うが、私はそれが呼び出されているのか分からない。

答えて

6

CURfile formatで実際に指定されています。

CURファイル形式は、Microsoft Windowsの アニメーションカーソルとほぼ同じ画像ファイル形式です。これらの2つのファイル形式の間の唯一の違い は、それらを識別するために使用されるバイトであり、 はCUR形式ヘッダーのホットスポットの追加です。ホットスポットは、ユーザが実際に マウスを指し示しているカーソル画像の左上の 角からの画素オフセット(x、y座標)として定義された である。

CURファイルを編集できるプログラムでは、通常、ホットスポットを指定できます。詳細はthis questionにあります。ここでのトピックに関するかなり徹底した記事があります

+0

私はビットマップ(png)でカーソルファイルではないことを指定していたはずです。これをビットマップで行う方法はありますか? – Jack

+0

@Jack - 多分この[質問](http://stackoverflow.com/questions/550918/change-cursor-hotspot-in-winforms-net)はあなたが必要とするものに近いでしょうか? – CodeNaked

+0

はい、それは動作します。ありがとう。 – Jack

1

コードでを実行することはできません。私は同じことをしたかったが、それは不可能である。 実際、Cursor classにはHotSpotというプロパティがあります。これは変更したいポイントです。ただし、このプロパティは読み取り専用です。 これを変更する唯一の方法は、ファイルロード時です(.curファイルでは、カーソルを編集するためにCursorおよびアイコンプラグイン(Web上で検索)でPaint .netを使用することをお勧めします)。重要なこと:カーソルはファイルでなければならず、リソースなどではない(ファイルシステム上のファイルでなければならない)のでロードする必要があります。それを覚えて、私は悪い時代には他の方法でテストしました。

私が心に留めているのは、ホットスポットを変更する必要があるときだけカーソルファイルを編集するということですが、これはカーソルファイルのホットスポットを変更できるAPIを作成する必要があります。私はこのファイルがどのように構築されているのか分かりませんので、ここから続ける必要があります。

希望します。

+1

Rickのチュートリアルでは、ランタイム中(つまりコードを通して)にビットマップからカーソルを作成するのではなく、この[質問](http://stackoverflow.com/questions/550918/change-cursor-hotspot-in-winforms-net) – CodeNaked

+0

ビットマップを使ってビットマップを作成することはできますが、私が知らなかったのは、ファイルなしでそのカーソルのハンドルを作成できるということです(ファイルシステムに保存しなければならないと思っていましたランタイム)、私はそれを他のいくつかの質問でそれを読んで、申し訳ありません。しかし、あなたは**ホットスポットを変更するためにカーソル全体を再構築する必要があります。それは私が彼に見せたいと思っていた重要なことです –

関連する問題