2

我想知道是否可以在紧凑的框架上创建漂亮的表单效果。

我的计划是,当用户在主表单上选择一个图像时,它会以新表单打开,这目前有效。我现在要做的是制作包含全尺寸图片的表单,以大约 4 像素高从屏幕边缘(左侧或右侧)加载,然后滑入视图。一旦表单完全显示在屏幕上,然后扩展高度,直到达到屏幕的最大值。

关闭时,我想将高度降低到 4 像素高,然后在处理表单之前再次滑出边缘。

我在实例化表单时尝试了下面的代码,无论 dp.Width == 240 如何, dp.Top 属性始终为 0

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

4

1 回答 1

1

为此,请从已加载图像的 PictureBox 控件开始。将 Height 设置为 4,将 Width 设置为表单的宽度,并且(非常重要)将PictureBox的SizeMode设置为StretchImage

接下来,通过将 Top 设置为 0 并将 Left 设置为 -Width 将 PictureBox 放置在屏幕之外。在窗体上放置一个 Timer 控件,间隔为 100(或其他),并使其事件逐渐向右移动 PictureBox 直到其 Left 属性为 0。一旦到达该点,让计时器事件逐渐增加 Height 直到它达到了表格的高度。

您可能必须处理闪烁,但这应该可以帮助您入门。

更新:我刚刚仔细阅读了您的问题,并意识到您实际上希望将表单本身从屏幕外移动到全屏。如果您希望整个表单(包括顶部的标题栏)以这种方式进行动画处理,这是不可能的,但是您可以通过设置表单的 FormBorderStyle 来实现这一点(或者我认为它在 Compact Framework 中只是称为 BorderStyle)为无。将 BorderStyle 设置为 None 时,更改 Height、Width、Top 和 Left 属性实际上会对表单产生可见的影响(尽管表单将是无边框的)。 否则,这些属性在 Windows Mobile 中会被完全忽略,这可能就是您的代码似乎没有做任何事情的原因。

更新 2:这是对类似 WM 问题的回答,它可以帮助您使动画窗口看起来像一个真实的窗口。

于 2009-06-18T15:14:01.057 回答