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

我的计划是当用户选择主表单上的图像时,会以新的形式打开,这当前有效。我现在要做的是使包含全尺寸图片的表单从屏幕边缘(左侧或右侧)加载大约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

单稳

有帮助吗?

解决方案

为此,请从装有图像的PictureBox控件开始。将“高度”设置为4,将“宽度”设置为表单的宽度,并且(非常重要)将PictureBox的 SizeMode 设置为 StretchImage

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

你可能不得不处理闪烁,但这应该让你开始。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top