求百叶窗效果显示图片源码(c#),谢谢!
另外,大家是否买了那个Visual C#2005编程技巧大全的书呢,提供下源码好吗,谢谢![email protected],小弟感激不尽!

解决方案 »

  1.   

    有非常投机取巧的办法,就是用页面滤镜,1行html搞定.....23种特效里面有百叶窗的.你可以用FrontPage做好静态页面(页面上只有一张图片,什么都没有),把垃圾标签删除了.然后显示图片的时候把这个页面放Iframe里面,用样式把Iframe边框去掉看不见.
      

  2.   

    百叶窗有两种显示效果,一种是垂直百叶窗,另一种是水平百叶窗。 实现百叶窗显示图像有两种方式:一是根据窗口或图像的高度或宽度和定制的百叶窗显示条宽度计算百叶窗的显示的条数量;二是根据窗口或图像的高度或宽度和定制的百叶窗显示条数量计算百叶窗的显示的条宽度。垂直百叶窗实现代码如下: private void button1_Click(object sender, EventArgs e)
    {
       //垂直百叶窗显示图像
        try
        {
            MyBitmap = (Bitmap)this.pictureBox1.Image.Clone();
            int dw = MyBitmap.Width / 30;
            int dh = MyBitmap.Height;
            Graphics g = this.pictureBox1.CreateGraphics();
            g.Clear(Color.Gray);
            Point[] MyPoint = new Point[30];
            for (int x = 0; x < 30; x++)
            {
                MyPoint[x].Y = 0;
                MyPoint[x].X = x * dw;
            }
            Bitmap bitmap = new Bitmap(MyBitmap.Width, MyBitmap.Height);
            for (int i = 0; i < dw; i++)
            {
                for (int j = 0; j < 30; j++)
                {
                    for (int k = 0; k < dh; k++)
                    {
                        bitmap.SetPixel(MyPoint[j].X + i, MyPoint[j].Y + k, MyBitmap.GetPixel(MyPoint[j].X + i, MyPoint[j].Y + k));
                    }
                }
                this.pictureBox1.Refresh();
                this.pictureBox1.Image = bitmap;
                System.Threading.Thread.Sleep(100);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "信息提示");
        }
    }  水平百叶窗实现代码如下: private void button3_Click(object sender, EventArgs e)
    {
        //水平百叶窗显示图像
        try
        {
            MyBitmap = (Bitmap)this.pictureBox1.Image.Clone();
            int dh = MyBitmap.Height / 20;
            int dw = MyBitmap.Width;
            Graphics g = this.pictureBox1.CreateGraphics();
            g.Clear(Color.Gray);
            Point[] MyPoint = new Point[20];
            for (int y = 0; y < 20; y++)
            {
                MyPoint[y].X = 0;
                MyPoint[y].Y = y * dh;
            }
            Bitmap bitmap = new Bitmap(MyBitmap.Width, MyBitmap.Height);
            for (int i = 0; i < dh; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    for (int k = 0; k < dw; k++)
                    {
                        bitmap.SetPixel(MyPoint[j].X + k, MyPoint[j].Y + i, MyBitmap.GetPixel(MyPoint[j].X + k, MyPoint[j].Y + i));
                    }
                }
                this.pictureBox1.Refresh();
                this.pictureBox1.Image = bitmap;
                System.Threading.Thread.Sleep(100);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "信息提示");
        }