听说把窗体弄成百叶窗要用System.Draw的绘图函数,
把窗体分成若干份,每次填充每份的一小横条。
具体代码怎么写啊?

解决方案 »

  1.   


    /// <summary>
            /// 垂直百叶窗
            /// </summary>
            /// <param name="bmp">Bitmap 对象</param>
            /// <param name="picBox">PictureBox 对象</param>
            public static void BaiYeChuang1(Bitmap bmp, PictureBox picBox)
            {
                //垂直百叶窗显示图像
                try
                {
                    Bitmap MyBitmap =(Bitmap) bmp.Clone();
                    int dw = MyBitmap.Width / 30;
                    int dh = MyBitmap.Height;
                    Graphics g = picBox.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));
                            }
                        }
                        picBox.Refresh();
                        picBox.Image = bitmap;
                        System.Threading.Thread.Sleep(120);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "信息提示");
                }        }
            /// <summary>
            /// 水平百叶窗
            /// </summary>
            /// <param name="bmp">Bitmap 对象</param>
            /// <param name="picBox">PictureBox 对象</param>
            public static void BaiYeChuang2(Bitmap bmp, PictureBox picBox)
            {
                //水平百叶窗显示图像
                try
                {
                    Bitmap MyBitmap = (Bitmap)bmp.Clone();
                    int dh = MyBitmap.Height / 20;
                    int dw = MyBitmap.Width;
                    Graphics g = picBox.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));
                            }
                        }
                        picBox.Refresh();
                        picBox.Image = bitmap;
                        System.Threading.Thread.Sleep(100);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "信息提示");
                }
            }