歡迎光臨 pure C# 技術社群.
登入
|
註冊
pure C# 技術社群
- Microsoft .NET Framework 相關技術非官方討論社群 -
首頁
|
社群
|
搜尋
|
個人設定
|
管理
|
郵件服務
|
Blog
pure C# 技術社群
»
C#
»
如何建立與檔案總管顯示圖片時,...
如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
1
2
[第1/2頁 共13項]
02
三月
2007
#1
如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
bigdstut
在 20:46 發表
我目前用Imagelist存放要顯示的圖片,但Imagelist的大小的限制,導致顯示的圖片依據此大小顯示,讓顯示的品質並不是很好,請問我要如何才能做到跟檔案總管縮圖一樣的效果,我看很多下載相簿程式的ap都有實作出來,請各位先進幫個忙
回覆
|
引用
|
編輯
|
私人訊息
贊助商連結
02
三月
2007
#2
Re: 如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
GOLDEYE
在 22:47 發表
一種方式就是先用Photoshop把圖片縮小到剛好你要顯示的大小
這樣就不會因為像素不整除而感覺圖片有點怪怪的
另一種方式就是用icon格式的圖片
icon可以同時儲存好幾個size的版本再同一個檔案
假設你一個圖片儲存有16x16 32x32 48x48三種size
Imagelist中可以依需求把ImageSize屬性設定為要顯示的size
這樣就可以避免因圖片縮放而產變型
回覆
|
引用
|
編輯
|
私人訊息
03
三月
2007
#3
Re: 如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
million
在 10:33 發表
Imagelist並不是用來做相簿程式的
其實Imagelist的運用比較像是早期的Application Resouse
也就是把程式所要用到的圖示預先存在應用程式裡這樣發佈程式的時後就只需要一個執行檔
不用連同一堆程式裡的小圖示一起發佈
老闆, 請給我提神用的細肩帶小女孩不加辣, 謝謝
回覆
|
引用
|
編輯
|
私人訊息
03
三月
2007
#4
Re: 如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
bigdstut
在 21:40 發表
感謝
million
大大的回答
但我是希望用listview預覽圖片時,圖片能等比例縮圖,不用imagelist還有別的做法嗎?一般相簿下載的ap,不是用listview+imagelist做預覽的顯示嗎
回覆
|
引用
|
編輯
|
私人訊息
03
三月
2007
#5
Re: 如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
諸葛亮
在 22:21 發表
要做到相簿程式的效果還是用Image物件比較好
因為圖片來源是在runtime才由程式讀入
這是我在網路上找到的產生縮圖函式
原本這是用在asp.net網頁動態產生縮圖用的
你可以試試修改成不要存成實體圖檔
直接在記憶體裡顯示圖片
///
/// 產生縮略圖 ///
///
源圖路徑(物理路徑) ///
縮略圖路徑(物理路徑) ///
縮略圖寬度 ///
縮略圖高度 ///
產生縮略圖的方式 public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode) { Image originalImage = Image.FromFile(originalImagePath); int towidth = width; int toheight = height; int x = 0; int y = 0; int ow = originalImage.Width; int oh = originalImage.Height; switch (mode) { case "HW"://指定高寬縮放(可能變形) break; case "W"://指定寬,高按比例 toheight = originalImage.Height * width/originalImage.Width; break; case "H"://指定高,寬按比例 towidth = originalImage.Width * height/originalImage.Height; break; case "Cut"://指定高寬裁減(不變形) if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight) { oh = originalImage.Height; ow = originalImage.Height*towidth/toheight; y = 0; x = (originalImage.Width - ow)/2; } else { ow = originalImage.Width; oh = originalImage.Width*height/towidth; x = 0; y = (originalImage.Height - oh)/2; } break; default : break; } //新建一個bmp圖片 Image bitmap = new System.Drawing.Bitmap(towidth,toheight); //新建一個畫板 Graphics g = System.Drawing.Graphics.FromImage(bitmap); //設定高品質插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //設定高品質,低速度呈現平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空畫布並以透明背景色填充 g.Clear(Color.Transparent); //在指定位置並且按指定大小繪制原圖片的指定部分 g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), new Rectangle(x, y, ow,oh), GraphicsUnit.Pixel); try { //以jpg格式保存縮略圖 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); } catch(System.Exception e) { throw e; } finally { originalImage.Dispose(); bitmap.Dispose(); g.Dispose(); } }
回覆
|
引用
|
編輯
|
私人訊息
05
三月
2007
#6
Re: 如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
bigdstut
在 11:54 發表
諸葛亮你所提供的函式我有測試過了(使用cut方法),但最後還是會把imagelist所設的大小,填滿影像,顯示的品質是有改善,跟我後來用GetThumbNailImage方法處理過的縮圖存入ImageList,再交由listview來顯示,效果差不多,但缺點就是圖片太小的話,品質還是不優
以下連結是我程式拍下來的畫面
http://www.wretch.cc/album/show.php?i=bigdstut&b=6&f=1132219245&p=16
有空就看一下吧
還是感謝各位提供的方法,不過還是希望做到跟檔案總管的縮圖一樣完美呀><卡關~
回覆
|
引用
|
編輯
|
私人訊息
05
三月
2007
#7
Re: 如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
諸葛亮
在 18:43 發表
你把處理過的圖片又放到ImageList那跟一開始就把原圖放到ImageList不是一樣嗎
你應該用別種方式來顯示已經縮小過的圖片
比如動態產生PictureBox並且一格一格排列然後將縮圖用PictureBox顯示
如果希望程式能快速處理圖片也可以直接操作GDI+讓圖片"畫"在一個panel上
其實寫程式要做到某種功能方法有百百種但要看需求而訂
ImageList 也是一種方法只是因為圖片品質嚴重破壞不能符合你的需求
回覆
|
引用
|
編輯
|
私人訊息
贊助商連結
06
三月
2007
#8
Re: 如何建立與檔案總管顯示圖片時,一樣的縮圖效果!!
a
0.0 (0 人評價)
由
江田島平八
在 13:45 發表
我覺得重點是在於Imagelist會自動把圖片縮小或放大成設定的大小
所以如果你給Imagelist的圖片大小不等於ImageSize屬性就會變型
換句話說如果給Imagelist的圖片剛好是ImageSize屬性的大小就不會變型
那麼可以先把問題簡化一下
「如何不論原圖片是多大或多小都產生固定大小的圖片」
前面的函式已經可以處理太大的圖片
現在只剩下太小的圖片要怎麼處理的問題了 (放大?? 不放大但是圖片周圍填上白色背景??)
回覆
|
引用
|
編輯
|
私人訊息
1
2
[第1/2頁 共13項]
參考其它主題
ASP.Net+C#上傳圖片後~如何把它sho...
实现无刷新DropDownList联动效果
求如何看一個檔案中的所有檔案
縮放影像可以幫我看看嗎?
我想畫個圓餅圖
請問C#呼叫不同語言開發的其它D...
如何寫出按下按鈕後彈出視窗的語法?...
怎麼實現一個頁面只刷新某個值,但...
將上傳的檔案自動RAR壓縮
不好意思,又來打擾。什麼是whiteh...
當程式發生錯誤時程式作者最常見的2...
您好,第一次来这里,关于sitemappa...
如何令div裹的東西跟著我的移動走?
C#的屬性不能像VB.NET一樣帶參數嗎
請問哪裡有免費的支援asp.net的空間...
This Community Server used ASP.NET 2.0 technology.
Copyright © 2006 ****** in development. All rights reserved.