Nat*_*lch 20
查看Google Code上的dot-net-transitions项目.现在Github上有一个克隆版.它也可以在nuget上使用dot-net-transitions.它支持各种线性/非线性转换,包括复合转换,可用于更复杂的效果,如纹波.
这是一个演示您所需行为的工作示例:
var pictureBox = new PictureBox
{
ImageLocation = "http://icons2.iconarchive.com/icons/klukeart/summer/128/hamburger-icon.png",
SizeMode = PictureBoxSizeMode.AutoSize
};
var textBox = new TextBox
{
Text = "Hello World",
Location = new Point(140, 140)
};
var form = new Form
{
Controls =
{
textBox,
pictureBox
}
};
form.Click += (sender, e) =>
{
// swap the Left and Top properties using a transition
var t = new Transition(new TransitionType_EaseInEaseOut(1000));
t.add(pictureBox, "Left", textBox.Left);
t.add(pictureBox, "Top", textBox.Top);
t.add(textBox, "Left", pictureBox.Left);
t.add(textBox, "Top", pictureBox.Top);
t.run();
};
form.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
我建议你切换到WPF; 这将使它变得容易.
在WinForms中完全不可能淡化控件; Windows控件不能具有不透明度.
最接近的是将窗体上的控件及其区域渲染为一对位图,然后使用ColorMatrix对PictureBox中的位图进行交叉淡化.
要在WinForms中滑动控件,可以使用Timer逐步更改控件的Top和/或Left属性,并在窗体中移动它们.但是,你会得到一个恼人的闪烁,这是(AFAIK)无法删除.
| 归档时间: |
|
| 查看次数: |
31617 次 |
| 最近记录: |