请问图像缩略图是如何实现的?给个思路 就像acdsee,winxp浏览器里自带的那种功能,能把所有当前目录下的图像文件一个个缩略图显示出来,我现在用了一个源码就是能显示当前目录下所有文件的图标显示,就像资源管理器的右边一样,(那个源码封装了几个类,好像使用shell弄得)如何得倒和调整每一个文件图标显示的pdc,把图标变大然后自己把可以显示的图片的dib用bitblt上去? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //原始图片名称string originalFilename = "c:\\222.jpg";//生成的高质量图片名称string strGoodFile = "c:\\222-small-good.jpg";//生成的低质量图片名称string strBadFile = "c:\\222-small-bad.jpg";//缩小的倍数int iScale = 3;//从文件取得图片对象System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);//取得图片大小System.Drawing.Size size = new Size(image.Width / iScale , image.Height / iScale);//新建一个bmp图片System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);//新建一个画板System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);//设置高质量插值法g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//清空一下画布g.Clear(Color.Blue);//在指定位置画图g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), new System.Drawing.Rectangle(0, 0, image.Width,image.Height), System.Drawing.GraphicsUnit.Pixel);//保存高清晰度的缩略图bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg);//取得原图像的普通缩略图System.Drawing.Image img = image.GetThumbnailImage(image.Width / iScale, image.Height / iScale, null, IntPtr.Zero);//保存普通缩略图img.Save(strBadFile, System.Drawing.Imaging.ImageFormat.Jpeg);g.Dispose();MessageBox.Show("生成完毕"); acdsee其实是添加文件夹的缩略图到thumbs.db中去 是的啊,1,2楼两位说得要用gdi+和dotnet了,但是acdsee可是在98下就可以实现这些功能的,肯定是他自己写的功能 自己写一个类似Windows缩略图的窗口类不就可以了,以前在Linux下为MiniGUI写过一个,不是太多代码,计算一下每个框框的大小,然后StretchBlt就可以了:) xmemory有问题 help:dbf文件读取出问题 *.manifest對dll無效 ado的几个指针是堆指针还是践指针?? 滚动条的问题 请问各位用过detours没啊,我怎么连samples都没法完全编译通过,另外如果用他来HOOK API的话,要怎样的步骤? CDC绘图 初学者问题:怎样在VC中设置编译选项? 如何取得鼠标在屏幕上的位置? 关于C++语言的实践操作问题 关于组合框的一个问题 请问动态创建的CtoolBar如何加入提示文本(tooltips)?
string originalFilename = "c:\\222.jpg";
//生成的高质量图片名称
string strGoodFile = "c:\\222-small-good.jpg";
//生成的低质量图片名称
string strBadFile = "c:\\222-small-bad.jpg";
//缩小的倍数
int iScale = 3;//从文件取得图片对象
System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);
//取得图片大小
System.Drawing.Size size = new Size(image.Width / iScale , image.Height / iScale);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布
g.Clear(Color.Blue);
//在指定位置画图
g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(0, 0, image.Width,image.Height),
System.Drawing.GraphicsUnit.Pixel);
//保存高清晰度的缩略图
bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg);
//取得原图像的普通缩略图
System.Drawing.Image img = image.GetThumbnailImage(image.Width / iScale, image.Height / iScale, null, IntPtr.Zero);
//保存普通缩略图
img.Save(strBadFile, System.Drawing.Imaging.ImageFormat.Jpeg);g.Dispose();
MessageBox.Show("生成完毕");