示例#1
0
        public void SetPreviewItem(ShellItem shellItem)
        {
            //  Create a stream for the item.
            using (var managedStream = new FileStream(shellItem.Path, FileMode.Open, FileAccess.Read))
            {
                var stream = new StreamWrapper(managedStream);
                ((IInitializeWithStream) sharpThumbnailHandler).Initialize(stream, 0);
                IntPtr bitmapHandle;
                WTS_ALPHATYPE alphaType;
                ((IThumbnailProvider) sharpThumbnailHandler).GetThumbnail((uint)pictureBox1.Width, out bitmapHandle, out alphaType);
                pictureBox1.Image = Image.FromHbitmap(bitmapHandle);
                /*
                var bitmap = (Bitmap) sharpThumbnailHandler.GetType().GetMethod("GetThumbnailImage", BindingFlags.Instance | BindingFlags.NonPublic)
                                                           .Invoke(sharpThumbnailHandler, new object[] { (uint)pictureBox1.Width });

                var hbmp = bitmap.GetHbitmap();
                var converted = Image.FromHbitmap(hbmp);
                pictureBox1.Image = converted;*/
            }
        }
        public void SetPreviewItem(string path)
        {

            if (previewHandler is IInitializeWithFile)
            {
                ((IInitializeWithFile)previewHandler).Initialize(path, 0);
            }
            else if (previewHandler is IInitializeWithStream)
            {
                var managedStream = File.Open(path, FileMode.Open);
                var stream = new StreamWrapper(managedStream);
                ((IInitializeWithStream)previewHandler).Initialize(stream, 0);
            }

            if (previewHandler is IPreviewHandler)
            {
                RECT rect = new RECT() {bottom = ClientRectangle.Bottom, left = ClientRectangle.Left, right = ClientRectangle.Right, top = ClientRectangle.Top};
                ((IPreviewHandler)previewHandler).SetWindow(Handle, rect);
                ((IPreviewHandler)previewHandler).DoPreview();
            }
        }