KingDZ 变菜鸟,每日一个C#小实例之---百叶窗图片展示
生活随笔
收集整理的這篇文章主要介紹了
KingDZ 变菜鸟,每日一个C#小实例之---百叶窗图片展示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這回給大家做的一個效果圖如下:
看到了嗎?哈哈,我們C# 也可以做出來很好的效果哦,我們下面開始吧。
首先大家要熟悉 Bitmap? 的用法,因為我們這次就是用到了這種位圖。。還有可能需要大家了解一些GDI的繪圖操作,以方便我們這節課程的應用。首先我們先直接給 PictrueBox 指定一張圖片。
好了,下面的一個技巧就是 直接將? PictrueBox? 里面的圖片復制到 Bitmap 里面去 這么著我們就可以很簡單的去操作這張圖片了。
background = (Bitmap)pic.Image.Clone(); //克隆圖片到 Bitmap 中去。好了,下面我們將這張圖片的像素拆開。
int dw = background.Width / 10; //按照每個圖片30個像素分解圖片 int dh = background.Height; //圖片的高度 Graphics g = pic.CreateGraphics(); //創建一個 Graphics Point[] myPoint = new Point[10]; //得到一個坐標數組 for (int x = 0; x < 10; x++) {myPoint[x].Y = 0;myPoint[x].X = x * dw; } 好了,我已經稍微寫了一些注釋,其實,簡單的理解一下,就是說我們將這張圖片? 給分解開了,為下面的重繪做準備。百葉窗,顧名思義,就是一張圖片分成幾部分,然后依次展示即可。
//開始重繪Bitmap bitmap = new Bitmap(background.Width, background.Height);//循環分解成了多少張圖片for (int i = 0; i < dw; i++){//取上面數據中對應的坐標點for (int j = 0; j < 10; j++){for (int k = 0; k < dh; k++){bitmap.SetPixel(myPoint[j].X + i, myPoint[j].Y + k, background.GetPixel(myPoint[j].X + i, myPoint[j].Y + k));//SetPixel (X坐標,Y坐標,這個點的顏色)//開始重繪}}pic.Refresh(); //不斷的刷新pic,出現頁面假死現象,其實可以用多線程解決pic.Image = bitmap;}好了,現在我們其實主要需要理解的就是,上面的那三層循環了,最外面的是循環每一個? 分解后的圖片的 X坐標【可以這么理解,就是每個小圖片的原點X坐標】
第二個循環代表的是? 每個小圖片的 像素,大家可以自己看一下,其實就是用? bitmap 不斷的取像素,然后一點點的重繪圖片。
頁面這么著實現,會造成假死現象,大家可以使用多線程的方法,優化我們的代碼。
好了,就說這么多巴,大家可以自己實現縱向百葉窗效果。
代碼下載
ManyPic.rar
轉載于:https://www.cnblogs.com/hihell/archive/2011/09/14/2176167.html
總結
以上是生活随笔為你收集整理的KingDZ 变菜鸟,每日一个C#小实例之---百叶窗图片展示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bigtall的敏捷日记(1)
- 下一篇: 即时显示缩略图