Advertisement
Advertisement
| 06.20.2008 at 01:16AM PDT, ID: 23501493 |
|
[x]
Attachment Details
|
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: |
//USER CONTROL CODE
public delegate void NoArgDelegate();
public delegate void ImageArgDelegate(Image image);
public partial class ScannedImageTile : UserControl
{
private ScannedFile _scannedFile;
private Image _image;
private static Size _thumbSize = new Size(72, 102);
public ScannedImageTile()
{
InitializeComponent();
}
public ScannedFile ScannedFile
{
get { return _scannedFile; }
set {
_scannedFile = value;
if (_scannedFile == null)
{
if (_image != null) _image.Dispose();
_image = null;
_pictureBox = null;
}
else
{
_errorProvider.SetError(_pictureBox, _scannedFile.ErrorMessages);
}
}
}
private void GetThumbnail()
{
using (MemoryStream stream = new MemoryStream(_scannedFile.GetImageData()))
{
_image = Image.FromStream(stream);
}
Image thumb = Thumbnail.GetThumbnailImage(ref _thumbSize, _image);
UpdatePictureSafely(thumb);
}
private void UpdatePictureSafely(Image thumb)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ImageArgDelegate(UpdatePictureSafely), thumb);
}
else
{
_pictureBox.Image = thumb;
}
}
private void ScannedImageTile_Paint(object sender, PaintEventArgs e)
{
if (_scannedFile != null && _pictureBox.Image == null)
BeginInvoke(new NoArgDelegate(GetThumbnail));
}
}
//THUMBNAIL HELPER CLASS CODE
public class Thumbnail:ObjectModelBase
{
...
public static System.Drawing.Image GetThumbnailImage(ref Size thumbSize, System.Drawing.Image image)
{
System.Drawing.Image.GetThumbnailImageAbort myCallback =
new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image thumb = image.GetThumbnailImage(thumbSize.Width, thumbSize.Height, myCallback, IntPtr.Zero);
return thumb;
}
private static bool ThumbnailCallback()
{
return false;
}
}
|