2017-10-26 5 views
0

カスタムカーソルを設定するにはどうすればよいですか?私はいくつかの質問と答えを読んだことがあり、役に立たないものは何も見つかりませんでした。カスタムカーソルを設定するにはどうすればよいですか?

私は画像ビューアを作成していますが、現在はパン機能に取り組んでいます。私は、任意のスケール/ズームがピクチャボックスに適用された後に実行される機能を持っている:

private void CheckOverflow() 
{ 
    if (ImageBox.Width > BottomPanel.Width || ImageBox.Height > BottomPanel.Height) 
    { 
     BottomPanel.Cursor = Cursors.Hand; // set a custom cursor "pannable" 
    } 
    else if (BottomPanel.Cursor != Cursors.Default) 
    { 
     BottomPanel.Cursor = Cursors.Default; 
    } 
} 

PictureBoxPanelをオーバーフローした場合、それはパン可能です。今はWindowsのカーソルを使用していますが、うまくいきますが、Handのカーソルをカスタムのカーソルに変更したいと考えています。

私はpannable.curというカスタムカーソルを持っています。 Project->Properties->Resourcesウィンドウでプロジェクトに追加し、Build ActionプロパティをEmbedded Resourceに変更しました。

ここで、どのようにカーソルを作成すればよいですか?

Cursor Pannable = new Cursor(GetType(), "pannable.cur"); 

ただし、どこに配置する必要がありますか?これをCheckOverflowの中に置くと、繰り返し作成されます。それ以外は、うまくいきません。私は次のエラーを取得する:

enter image description here

私は一度、2つのカーソル(パン可能とパン)を作成し、前後にcontols'カーソルを変更することがあります。

どうすればよいですか?

ソースコードはGithubで入手できます。

答えて

2

多分試してみてください。

using (MemoryStream stream = new MemoryStream(Properties.Resources.pannable)) 
{ 
    BottomPanel.Cursor = new Cursor(stream); 
} 

Properties.Resource.pannableは、バイト配列を返しますが、カーソル(ストリーム)コンストラクタを使用することができますので、MemoryStreamをストリームに変換します。あなたが処分を気にしない場合は、ここで(https://msdn.microsoft.com/en-us/library/system.windows.forms.cursor(v=vs.110).aspx

を参照してください、そしてちょうど使用:

BottomPanel.Cursor = new Cursor(new MemoryStream(Properties.Resources.pannable)); 
+0

+1これは私のために働いたが、私は、わずかに異なるバージョンを使用することにしましたそれ[理由(https://stackoverflow.com/a/4306984/2202732)透過/色付きのカーソルを使用します。 – akinuri

関連する問題