图片滑动的算法如何实现
在做一组图片动画的实验,但我只会滚动的算法例如上下展开我是这么写的:int y = 0;
while (y <= bmp.Height / 2)
{
Rectangle SrcRect = new Rectangle(0, bmp.Height / 2 - y, bmp.Width, 1);
dc.DrawImage(bmp, 0, bmp.Height / 2 - y, SrcRect, GraphicsUnit.Pixel);
Rectangle DrcRect = new Rectangle(0, bmp.Height / 2 - y, bmp.Width, 1);
DrcRect = new Rectangle(0, bmp.Height /2 + y, bmp.Width, 1);
dc.DrawImage(bmp, 0, bmp.Height / 2 + y, DrcRect, GraphicsUnit.Pixel);
ShowBmp(Rectangle.Union(SrcRect, DrcRect));
Thread.Sleep(15 * delay);
y++;
}
这样的话图片是滚动出现的,而我要做上移的算法,就需要滑动的慢慢向上移动,请教下各位大概的算法怎么写。 --------------------编程问答-------------------- 慢慢向上移动 可以用Thread.Sleep(50) 0.05秒 --------------------编程问答--------------------
滑动跟滚动的最起码区别(程序员一看就知道的区别),是它不会再while循环中去new什么对象,而失去改变对象的位置信息。
这个区别真的需要自己看出来,不然....... --------------------编程问答-------------------- 别靠抄代码。自己多学点代码设计知识! --------------------编程问答--------------------
要的是这种效果? --------------------编程问答-------------------- 大哥我只是看看代码学习下,您别动火,能写个例子吗? --------------------编程问答-------------------- 这也是滚动,楼上的大哥说滑动不是在循环里面NEW新对象,想想确实如此。 --------------------编程问答-------------------- 那就再想想。这类区别必定用自己的脑子想出来,这就好像分别基本的人类,是要靠自己。最基本的推理都靠别人,那就不行啦.......那就很可能要考虑自己适合不适合做编程职业啦。 --------------------编程问答-------------------- 我们随便找一个有一点程序设计经验的程序员,它会说“哦,图片上移,改变top属性!”。不管有没有top属性,他的思路首先指向这个方向。如果他花时间去弄出来复杂的技术,却完全没有找出解决方向,那反而麻烦了。 --------------------编程问答-------------------- 找找看,你有没有局部的画布?有没有封装好的分层显示不同内容的控件可用? --------------------编程问答--------------------
int width = bt.Width;
int height = bt.Height;
Graphics g=this.panel1.CreateGraphics();
for (int x = 1; x <= height; x++)
{
Bitmap b = bt.Clone(new Rectangle(0, 0, width, x), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
g.DrawImage(b, 0, 0);
System.Threading.Thread.Sleep(20);
}
这样吗?有点闪 改进一下 --------------------编程问答--------------------
public Form1()
{
InitializeComponent();
this.DoubleBuffered = true;
}
private void button1_Click(object sender, EventArgs e)
{
Image img = new Bitmap(@"F:\图片\1.png");
for (int y = this.Height; y >= 0; y--)
{
Graphics g = this.CreateGraphics();
g.Clear(Color.WhiteSmoke);
g.DrawImage(img, 50, y);
System.Threading.Thread.Sleep(15);
}
}
我也那么想的,他老new一个新对象干嘛?莫非要做幻影特效? --------------------编程问答-------------------- 基础问题啊
脱离具体的某门语言。
一般,一个 可视的元素, 都有 x,y,width,height 属性。x,y,这个可视元素起绘位置。 多个的话。还有 z 属性
元素,移动位置,就是 变化 x,y,z。
特效的话。 作为数学。一般不需 重新创建。 一个已有的元素,进行数学变换即可
补充:.NET技术 , C#