![]() |
Desktop Development »
Miscellaneous »
Miscellaneous Controls
Intermediate
Image Slider .NET component - flicker free browsing of picturesBy Angel_KomarovImage Slider is a runtime .NET component that could be used for quick browsing of thumbnail images in Multimedia projects |
C#, Windows, .NET 1.0, .NET 1.1VS.NET2003, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

The purpose of this simple Image Catalogue demo is to show the functionality of �Image Slider�. It is a runtime .NET component that could be used for quick browsing of thumbnail images � slider�s thumb represents the current image. The slider produces a flicker free animation of these images while someone is moving the thumb. �Image Slider� fires back �Image Changed� notification event (returning the new picture�s filename) when the image changes in its client area.
I created two folders with two copies of the same pictures for the demo program:
�Image Slider� displays all thumbnails, while all normal pictures are shown on catalogue�s client area. During its initialization �Image Slider� takes as input parameter Images� path. Then it creates a list of all file names from that folder. The slider loads a new Image from the disk every time when the thumb must display new picture.
Note: I used bmp files as thumbnails since .NET works faster with them than jpg (even when they are with bigger size).
The component is a wrapper of a standard .NET �Panel� class. It consists of three internal classes:
private ImgButton btnPrev; //left button
private ImgButton btnNext; //right button
private ClientArea slider; //client area of the slider
public ImgSlider(int Width, int Height, int buttonSize1)
It takes width and height of the component as well as the side�s size of
its two square buttons. As the slider is resizable these values are recalculated
when the container resizes.
public void Initialize(string btnPrevPic,
string btnPrevPicD,
string btnNextPic,
string btnNextPicD,
int penWidth,
Color penColor,
string bkgPic)
btnPrevPic, btnPrevPicD � left slider�s button /
button down pictures
btnNextPic, btnNextPicD � right slider�s button /
button down pictures
penWidth, penColor � width and color of the axis
in client area.
BkgPic (or bkgColor) � background picture (or
color) of client area. ImgChangedHandler� is responsible for
firing �Image changed� events to container form. // Delegate declaration. It will be type of custom event..
public delegate void ImgChangedHandler(object sender,
ImgChangedArgs e);
// Custom event of type ImgChangedHandler.
public event ImgChangedHandler ImgChanged;
//-----------------------------------------------------------
// The OnImgChanged method raises the event by invoking
// the delegates. The sender is always this, the current instance
// of the class.
//-----------------------------------------------------------
public virtual void OnImgChanged(string ImgFileName)All this is done
according to Microsoft .NET requirements. The slider�s thumb animation (along
with GDI + double buffering) is very simple. For more details about the
algorithm please check: "A Simple, Flicker-Free 2D Animation Demo",
http://www.codeguru.com/Cpp/G-M/multimedia/graphics/article.php/c4713/using nmImgSlider;
private ImgSlider imgSdl;
//Init the image slider component
imgSdl = new ImgSlider(this.Width, 50, 50);
imgSdl.Location = new Point(0, 25);
//should be done before initialize - it needs parent...
Controls.Add(imgSdl);
imgSdl.Initialize("bkw.bmp", "bkwd.bmp", "fwd.bmp", "fwdd.bmp", 3,
Color.Black, "bkgslider1.bmp");
//Subscribe for changing image event.
imgSdl.ImgChanged += new ImgChangedHandler(
imgSdl_OnImgCahangedNotify);
if (!imgSdl.LoadImages(THUMBNAILS))
{
MessageBox.Show(imgSdl.ErrorMsg);
}
Where the event handler "imgSdl_OnImgCahangedNotify" should
be of ImgChangedHandler type. For details check Microsoft .NET
documentation.| You must Sign In to use this message board. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 23 Aug 2004 Editor: Nishant Sivakumar |
Copyright 2004 by Angel_Komarov Everything else Copyright © CodeProject, 1999-2009 Web21 | Advertise on the Code Project |