就像acdsee,winxp浏览器里自带的那种功能,能把所有当前目录下的图像文件一个个缩略图显示出来,我现在用了一个源码就是能显示当前目录下所有文件的图标显示,就像资源管理器的右边一样,(那个源码封装了几个类,好像使用shell弄得)如何得倒和调整每一个文件图标显示的pdc,把图标变大然后自己把可以显示的图片的dib用bitblt上去?

解决方案 »

  1.   

    //原始图片名称
    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("生成完毕");
      

  2.   

    acdsee其实是添加文件夹的缩略图到thumbs.db中去
      

  3.   

    是的啊,1,2楼两位说得要用gdi+和dotnet了,但是acdsee可是在98下就可以实现这些功能的,肯定是他自己写的功能
      

  4.   

    自己写一个类似Windows缩略图的窗口类不就可以了,以前在Linux下为MiniGUI写过一个,不是太多代码,计算一下每个框框的大小,然后StretchBlt就可以了:)