Displaying multi-page tiff files using the ImageBox control and C#
Earlier this week I received a support request from a user
wanting to know if it was possible to display multi-page tiff
files using the ImageBox
control. As I haven't wrote anything
about this control for a while, it seemed a good opportunity for
a short blog post.
Getting the number of pages in a TIFF file
One you have obtained an Image
instance containing your tiff
graphic, you can use the GetFrameCount
method in conjunction
with a predefined FrameDimension
object in order to determine
how many pages there are in the image.
private int GetPageCount(Image image)
{
FrameDimension dimension;
dimension = FrameDimension.Page;
return image.GetFrameCount(dimension);
}
I have tested this code on several images, and even types which don't support pages (such as standard bitmaps) have always return a valid value. However, I have no way of knowing if this will always be the case (I have experienced first hand differences in how GDI+ handles actions between different versions of Windows). The
Image
object does offer aFrameDimensionsList
property which returns a list of GUID's for the dimensions supported by the image, so you can always check the contents of this property first if you want to be extra sure.
Selecting a page
To change the active page the Image
object represents, you can
its SelectActiveFrame
method, passing in a FrameDimension
object and the zero-based page index. Again, we can use the
predefined FrameDimension.Page
property, similar to the
following
image.SelectActiveFrame(FrameDimension.Page, page - 1);
After which, we need to instruct our ImageBox
control (or
whatever control we have bound the image to) to repaint to pick
up the new image data.
imageBox.Invalidate();
You don't need to reassign the image (which probably won't work anyway if the control does an equality check), simply instructing it to repaint via
Invalidate
orRefresh
ought to be sufficient.
A sample multi-page tiff file
As multi-page tiffs aren't exactly common images to be found in plenty on the internet, I've prepared a sample image based on a Newton's Cradle animation from Wikipedia.
Download NewtonsCradle.tif (4MB)
Short and sweet
That is all the information we need to create a viewer - you can download the project shown in the above animation from the links below.
Update History
- 2016-07-30 - First published
- 2020-11-21 - Updated formatting
Related articles you may be interested in
- Adding drag handles to an ImageBox to allow resizing of selection regions
- ImageBox 1.1.4.0 update
- ImageBox and TabList update's - virtual mode, pixel grid, bug fixes and more!
- ImageBox update, version 1.1.0.0
- Zooming to fit a region in a ScrollableControl
- Zooming into a fixed point on a ScrollableControl
- Arcade explosion generator
- Creating an image viewer in C# Part 5: Selecting part of an image
- Extending the ImageBox component to display the contents of a PDF file using C#
- Creating a scrollable and zoomable image viewer in C# Part 4
- Creating a scrollable and zoomable image viewer in C# Part 3
- Creating a scrollable and zoomable image viewer in C# Part 2
- Creating a scrollable and zoomable image viewer in C# Part 1
Downloads
Filename | Description | Version | Release Date | |
---|---|---|---|---|
ImageBoxTiffViewer.zip
|
Sample project for the displaying multi-page tiff files using the ImageBox control and C# blog post. |
30/07/2016 | Download |
Leave a Comment
While we appreciate comments from our users, please follow our posting guidelines. Have you tried the Cyotek Forums for support from Cyotek and the community?
Comments
XiaoFei
#
hi,this message come from China.I am a coder come from China.I am very happy to connteciton you.Your control is very nice. I hope more exchanges.