当前位置:编程学习 > C#/ASP.NET >>

图片滑动的算法如何实现

在做一组图片动画的实验,但我只会滚动的算法例如上下展开我是这么写的:
 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什么对象,而失去改变对象的位置信息。

这个区别真的需要自己看出来,不然....... --------------------编程问答-------------------- 别靠抄代码。自己多学点代码设计知识! --------------------编程问答--------------------

 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);
            }
要的是这种效果? --------------------编程问答-------------------- 大哥我只是看看代码学习下,您别动火,能写个例子吗?
引用 3 楼  的回复:
别靠抄代码。自己多学点代码设计知识!
--------------------编程问答-------------------- 这也是滚动,楼上的大哥说滑动不是在循环里面NEW新对象,想想确实如此。
引用 4 楼  的回复:
C# code

 int width = bt.Width;
            int height = bt.Height;
            Graphics g=this.panel1.CreateGraphics();
            for (int x = 1; x <= height; x++)
            {
            ……
--------------------编程问答-------------------- 那就再想想。这类区别必定用自己的脑子想出来,这就好像分别基本的人类,是要靠自己。最基本的推理都靠别人,那就不行啦.......那就很可能要考虑自己适合不适合做编程职业啦。 --------------------编程问答-------------------- 我们随便找一个有一点程序设计经验的程序员,它会说“哦,图片上移,改变top属性!”。不管有没有top属性,他的思路首先指向这个方向。如果他花时间去弄出来复杂的技术,却完全没有找出解决方向,那反而麻烦了。 --------------------编程问答-------------------- 找找看,你有没有局部的画布?有没有封装好的分层显示不同内容的控件可用? --------------------编程问答--------------------

 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);
            }

        }
这样吗?有点闪  改进一下 --------------------编程问答--------------------
引用 2 楼  的回复:
引用楼主 的回复:
这样的话图片是滚动出现的,而我要做上移的算法,就需要滑动的慢慢向上移动,请教下各位大概的算法怎么写。

滑动跟滚动的最起码区别(程序员一看就知道的区别),是它不会再while循环中去new什么对象,而失去改变对象的位置信息。

这个区别真的需要自己看出来,不然.......

我也那么想的,他老new一个新对象干嘛?莫非要做幻影特效? --------------------编程问答-------------------- 基础问题啊

脱离具体的某门语言。

一般,一个 可视的元素, 都有 x,y,width,height 属性。x,y,这个可视元素起绘位置。 多个的话。还有 z 属性

元素,移动位置,就是 变化 x,y,z。

特效的话。 作为数学。一般不需 重新创建。 一个已有的元素,进行数学变换即可
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,