2009-06-18 70 views
2

我想知道是否可以在緊湊框架上創建漂亮的窗體效果。WM6 .Net窗體效果C#

我的計劃是,當用戶選擇主窗體上的圖像時,會以新窗體打開,此時此功能正常。我現在要做的是製作包含全尺寸圖片的表單,以大約4像素高的高度從屏幕的邊緣(左側或右側)加載,然後滑入視圖。一旦表格完全在屏幕上,然後展開高度,直到達到屏幕的最大值。

關閉時,我想將高度降低到4像素高度,並在處理表單之前再次滑下邊緣。

我已經試過實例的形式和dp.Top屬性總是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();  

內DisplayPicture形式的時候下面的代碼我也有以下嘗試並移動表單,但因爲它沒有設置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

ONESHOT

回答

1

要做到這一點,開始與已你的圖像加載PictureBox控件。將高度設置爲4,將寬度設置爲表單寬度,並且(非常重要)將PictureBox的SizeMode設置爲StretchImage

接下來,通過將Top設置爲0並將其設置爲-Width,將PictureBox置於屏幕外。將Timer控件放在窗體上,間隔爲100(或其他),並讓它的事件逐漸向右移動PictureBox,直到它的Left屬性爲0.一旦你到達那個點,讓計時器事件逐漸增加Height直到它達到了表格的高度。

你可能需要處理閃爍,但這應該讓你開始。

更新:我剛剛讀了你的問題更接近一點,並意識到你實際上希望將窗體本身從屏幕外移動到全屏。如果你希望整個表單(包括頂部的標題欄)以這種方式進行動畫處理,這是不可能的,但你可以通過設置表單的FormBorderStyle來做到這一點(或者我認爲它在Compact Framework中只是叫做BorderStyle)到無。在BorderStyle設置爲None的情況下,更改Height,Width,Top和Left屬性實際上會在窗體上產生可見的效果(儘管窗體將是無邊框的)。 這些屬性在Windows Mobile中完全忽略,這可能是您的代碼似乎沒有做任何事情的原因。

更新2:這裏是my answer到一個類似的WM問題,它可以幫助你讓你的動畫窗口看起來像一個真正的窗口。

+0

現貨!感謝它是停止代碼的邊框樣式! – OneSHOT 2009-06-18 21:49:06