2009-06-18 65 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