2017-08-17 9 views
0

私はPicturebox(picWorld)に問題があります。私はこのコードのようにそのサイズと位置を変更したい場合は、私はそれが二回更新されると思うので、それは多くの時間を要した:Pictureboxの自動確認を停止する方法は?

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12, picWorld.Location.Y - 12); 
} 

が速く、それを作るための方法はありますか?

+0

代わりに.Width、.Height、.Left、および.Topプロパティを変更しないでください。それはどれくらい遅いですか? – ainwood

+0

そのコードは遅くはありません。画像のペイント*に時間がかかり過ぎないようにするには、使用するビットマップに注意する必要があります。これは、正確には、補間する必要がないように、pboxに適合する正しいサイズでなければなりません。必要に応じて、ビットマップの複数のコピーを保持します。それぞれのサイズは、指定したサイズに合わせて事前に決められています。そしてそのピクセルフォーマットは*非常に*重要です、32bppPArgbだけ速いです。 –

+0

"picWorld.SetBounds()"メソッドを試してみてください。 – Bahrom

答えて

-1

ので外部変数(静的好む)を開始するために格納するときに終了するように、作成:

bool now=false; 

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
if (!now) 
{ 
now = true; 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12,  picWorld.Location.Y - 12); 
now = false; 
} 

}

+0

問題は、サイズを変更するとイメージが無効になることです。また、場所が変更されると、再度無効になります。 – Barbod

0

がそれを示し、それを移動させる、それを隠してみてください:

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
    picWorld.Hide(); 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12, picWorld.Location.Y - 12); 
    picWorld.Show(); 
} 
+0

これは速いですが、PictureBoxはマウスがlblWorldの上にあるときは隠しと表示にすぎません。 – Barbod

+0

サイズを変更したり、移動したりしませんか?何をしていないのですか?私はこの問題を理解するのには苦労しています。あなたの投稿にもっと情報を提供すると(おそらく)助けになるかもしれません。本当に高性能のビットマップが必要な場合は、おそらく@Hans Passantのコメントを見てください。 – ainwood

関連する問題