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

vb.net 怎样快速得到PictureBox1 像素的2维数组

得到PictureBox1 全部像素可以用
Bitmap(PictureBox1.Image), LockBits和 Marshal.Copy 得到一维数组,用起来不方便,用for循环转化为2维数组速度太慢
有没有好方法可以得到或者转为 PictureBox1 全部像素颜色数据 Data(x,y) 的2维数组。不要循环的!1600*1200大小 获取速度要<30ms


--------------------编程问答--------------------

 [DllImport("gdiplus.dll", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
        internal static extern int GdipBitmapGetPixel(HandleRef bitmap, int x, int y, out int argb);




        private void button2_Click(object sender, EventArgs e)
        {

            long start = DateTime.Now.Ticks;

            Bitmap bitmap = new Bitmap(@"C:\test.jpg");
            Color[][] result = new Color[bitmap.Width][];
            IntPtr nativeImage= new IntPtr();

            int argb = 0;

            for (int i = 0; i < bitmap.Width; i++)
            {
                for (int j = 0; j < bitmap.Height; j++)
                {
                    //result[i][j] = bitmap.GetPixel(i+1, j+1);

                    int status = GdipBitmapGetPixel(new HandleRef(bitmap, nativeImage), i, j, out argb);

                //    bitmap.GetPixel(i, j);
                }
            }
            long takeTime = DateTime.Now.Ticks - start;

            MessageBox.Show(takeTime.ToString());}

使用这个api可以省去一些时间,如果有兴趣你可以开个线程试试能不能再快点 --------------------编程问答-------------------- 我要的是vb.net代码啊
Marshal.Copy 得到一维数组用CopyMemory 来转可不可以,循环太慢 --------------------编程问答-------------------- 二维数组处理起来才慢。
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,