在WPF中將圖片轉換成3D圖像並可以旋轉


時光偷走的,永遠都是我們眼皮底下看不見的珍貴。

 

https://pan.baidu.com/s/14dk-OU2SR0nxXj2bL4bVpQ

源碼網站
https://www.codeproject.com/Articles/42174/High-performance-WPF-D-Chart

首先先看一下源代碼最初的運行效果,是否是自己需要的。

在這里,三維的面圖是用函數生成的Z軸數據,當然,我們也可以使用圖片的顏色作為Z軸。

准備工作,VS2008及以上版本,博主使用的是VS2017,需要升級一下項目。

在此感謝:Jianzhong Zhang

 

問題:

1、使用圖片的顏色作為第三軸(Z軸)

 

解決思路:

1.1    查看源碼中Z軸數據生成方式

1.2    將圖片讀取進來,並轉換成RGB數組

1.3    將圖片RGB數組替換原本的Z軸數據

 

 

找到Window1中代碼:

 

 

 

 

1.1    紅色表明是用函數給Z軸賦值。

// ***************************** 將圖片轉換成顏色數組 ***************************

        public static System.Drawing.Color[,] img2color(String imgfile)

        {

            System.Drawing.Bitmap img = new System.Drawing.Bitmap(imgfile);

            System.Drawing.Color[,] allcolor = new System.Drawing.Color[img.Height, img.Width];

            for (int h = 0; h < img.Height; h++)

                for (int w = 0; w < img.Width; w++)

                {

                    allcolor[h, w] = img.GetPixel(w, h);

                }

            GC.Collect();

            return allcolor;

}

 

 

 

 

將下列代碼放入TestSurffacePlot方法中:

float[] newData = new float[10000];
            System.Drawing.Color[,] allcolor = img2color("xxx111.jpg");
            int width = 100;
            for (int j = 0; j < 10000; j++)
            {
                Color NewColor = new Color();
                if (allcolor[j % width, j / width].B < 50 && allcolor[j % width, j / width].R < 50 && allcolor[j % width, j / width].G < 50)
                {
                    NewColor.A = 255;
                    NewColor.B = 255;
                    NewColor.R = 0;
                    NewColor.G = 255;
                }
                else {
                    NewColor.A = allcolor[j % width, j / width].A;
                    NewColor.R = allcolor[j % width, j / width].R;
                    NewColor.G = allcolor[j % width, j / width].G;
                    NewColor.B = allcolor[j % width, j / width].B;
                }
                m_3dChart[j].color = NewColor;
        }

 

大功告成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM