2009-06-18 11 views
2

コンパクトなフレームワークで素晴らしいフォームエフェクトを作成できるかどうかを知りたいと思います。WM6 .NetフォームエフェクトC#

私の計画は、ユーザーがメインフォーム上のイメージを選択すると、これが新しいフォームで開かれるということです。これは現在動作しています。私が今したいことは、フルサイズの画像が含まれているフォームを、約4ピクセル高いところで画面の端(左または右)からロードしてからビューにスライドさせることです。フォームが画面上に完全に表示されたら、スクリーンの最大値に達するまで高さを広げます。

終了時には、高さを4ピクセル高く戻し、フォームを廃棄する前に再びエッジから外してください。

私は、フォームのインスタンスを作成する際に以下のコードを試してみたとdp.Topプロパティは、私もしようとするには、以下のいるDisplayPictureフォームの中で、常に0にかかわらずdp.Widthの==の240

DisplayPicture dp = new DisplayPicture(ImageUrl); 
dp.WindowState = FormWindowState.Normal; 
dp.Left = dp.Width * -1; 
dp.Top = (dp.Height/2) - 2; 
dp.Height = 4; 
dp.ShowDialog();  

ましたフォームを移動しますが、Topプロパティを設定していないので、このコードはまだ重要ではありません。

void t_Tick(object sender, EventArgs e) 
{ 
    if (this.Left < 0) 
     this.Left += 5; 

    if (this.Left > -1) 
    { 
     this.Left = 0; 
     if (this.Height < pictureBox1.ClientRectangle.Height) 
     { 
      this.Height += 4; 
      this.Top -= 2; 
     } 

     if ((this.Left == 0) && (this.Top == 0)) 
      t.Enabled = false; 

    } 
} 

ご協力いただければ幸いです。

TIA

ワンショット

答えて

1

これを行うには、あなたのイメージがロードされたPictureBoxコントロールで始まります。高さを4に、幅をフォームの幅に設定し、(非常に重要)PictureBoxのSizeModeStretchImageに設定します。

次に、Topを0に、Leftを-Widthに設定して、PictureBoxを画面から外します。タイマーコントロールをフォームに100(または何でも)の間隔で配置し、そのイベントが徐々にPictureBoxを右に移動させ、そのLeftプロパティが0になるようにします。そのポイントに達すると、タイマーイベントを徐々に高さを高くしますそれはフォームの高さに達します。

あなたはたぶんちらつきに対処しなければならないかもしれませんが、これはあなたを始めるはずです。

更新:ちょっとあなたの質問をちょっと読んで、実際にフォーム自体をオフスクリーンからフルスクリーンに移動したいと思った。この方法でフォーム全体(タイトルバーを含む)全体をアニメーション化したい場合はできませんが、フォームのFormBorderStyleを設定することで並べ替えることができます(あるいは、Compact FrameworkでBorderStyleと呼ばれると思います) 〜にNone。 BorderStyleをNoneに設定すると、Height、Width、Top、Leftの各プロパティを変更すると、実際にはフォームに目に見えるような効果があります(ただし、フォームはボーダレスです)。 Windows Mobileでは、これらのプロパティが完全に無視されるため、コードが何もしていないようです。

更新2:類似のWM質問にmy answerがあります。これはアニメーションウィンドウを実際のウィンドウのように見せるのに役立ちます。

+0

Spot on!ありがとう、それはコードを停止していたボーダースタイルでした! – OneSHOT