Click here to Skip to main content
15,880,469 members
Articles / Desktop Programming / Windows Forms
Article

Scrolling Credits Control

Rate me:
Please Sign up or sign in to vote.
4.12/5 (12 votes)
14 Jun 20052 min read 68.1K   1.6K   29   19
A scrolling text and image control with smooth flicker free movement and mouse interference feature.

Sample Image - ScrollingBox_Screenshot.gif

Introduction

This is my first submission to CodeProject as I've been keeping all my good controls to myself for years. I've had a change of heart recently and thought I should share my code.

I recently saw a Scrolling Box control on CodeProject and I thought I could improve on its performance, so here's my rendition of it.

Using the code

You can set the alignment of the scrolling text / images to Near/Center/Far. Padding can be applied on the left and right of the control (top and bottom not used).

Adding text or images is via the Items property by creating a new ScrollingBoxText or ScrollingBoxImage which inherits from the ScrollingBoxItem.

C#
scrollingBox1.Alignment = StringAlignment.Center;
scrollingBox1.Padding = new Padding(10, 10, 0, 0);

scrollingBox1.Items.Add(new 
  ScrollingBox.ScrollingBoxText("Hello this is a test"));
scrollingBox1.Items.Add(new 
  ScrollingBox.ScrollingBoxText("Hello this also is a test"));
scrollingBox1.Items.Add(new 
  ScrollingBox.ScrollingBoxImage(Image.FromFile("C:\\image.gif")));
scrollingBox1.Items.Add(new 
  ScrollingBox.ScrollingBoxText("Try having a long string to test wrapping"));
scrollingBox1.Items.Add(new 
  ScrollingBox.ScrollingBoxText("You can use new line switch\nHello"));

The added extra on this control is the ability to scroll backwards or push forward with the mouse, although slightly clumsy in use.

You can also change the font, background color or even have a background image.

Points of Interest

First off, I have written this in Visual Studio 2005 Beta 2, and I guess I'm gonna get a low ranking and a serious flaming because of this. Well, downgrading to a lower version is pretty simple, so if you need an earlier version, post a comment and I'll have to convert it.

Because this control will be constantly updating on the interface we have to reduce flicker to a minimum. I do this in three ways.

  1. Ensure I set the correct styles for the control.
    C#
    SetStyle(ControlStyles.UserPaint
        | ControlStyles.OptimizedDoubleBuffer
        | ControlStyles.AllPaintingInWmPaint, true);
        //ControlStyles.DoubleBuffer if not using .NET v2.0
  2. Only update the area of the control that needs to be updated, by using clipping (I've not actually done this in this control) and checking where the control needs to be updated.
    C#
    if (clipRectF.IntersectsWith(item.rectF))
  3. Write the bare minimum amount of code in the OnPaint function that is needed to complete the job, ensuring that all calculations are done else where.

Known Issues

  • The mouse is not really in control of the up and down movements, I just call the function that calculates the text / images when the mouse moves.
  • No design support for adding text or images.

History

  • Uploaded as Visual Studio 2005 Beta 2 solution - 15 June 2005.
  • Uploaded as Visual Studio 2003 solution - 21 June 2005.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Pepsibot20-Aug-11 10:15
Pepsibot20-Aug-11 10:15 
GeneralThanks Pin
dooldots12-Nov-09 11:11
dooldots12-Nov-09 11:11 
QuestionLicense? Pin
krisstep113-Nov-09 7:57
krisstep113-Nov-09 7:57 
AnswerRe: License? Pin
DXNuk3-Nov-09 12:18
DXNuk3-Nov-09 12:18 
GeneralUsing the code in our commercial product Pin
Prakash Buddhiraja11-Mar-09 13:07
Prakash Buddhiraja11-Mar-09 13:07 
Hi,

I didn't see any license attached with this article.
Am I free to use this code in our commercial product?

Can you please let me know?

Thanks,
prakash
GeneralAdd Remove Text Pin
Ben Harper3-Dec-06 20:32
Ben Harper3-Dec-06 20:32 
GeneralSome Queries Pin
yahyacis17-Nov-06 7:52
yahyacis17-Nov-06 7:52 
GeneralText Updating Pin
Mr_Whippy4-Jul-06 15:39
Mr_Whippy4-Jul-06 15:39 
GeneralRe: Text Updating Pin
Ben Harper3-Dec-06 20:17
Ben Harper3-Dec-06 20:17 
GeneralEmbedded Image Pin
soloforce12-Nov-05 5:29
soloforce12-Nov-05 5:29 
GeneralRe: Embedded Image Pin
Le_MuLoT8-Dec-05 5:08
Le_MuLoT8-Dec-05 5:08 
QuestionHow to move text Right or Left? Pin
Omar Mallat19-Oct-05 18:31
professionalOmar Mallat19-Oct-05 18:31 
QuestionHow to delete item ? Pin
Anonymous5-Oct-05 8:45
Anonymous5-Oct-05 8:45 
AnswerRe: How to delete item ? Pin
soloforce13-Nov-05 6:11
soloforce13-Nov-05 6:11 
QuestionLicence? Pin
hkulten26-Sep-05 23:22
hkulten26-Sep-05 23:22 
AnswerRe: Licence? Pin
DXNuk29-Sep-05 1:31
DXNuk29-Sep-05 1:31 
Generalvs 2003 Pin
picazo19-Sep-05 9:49
picazo19-Sep-05 9:49 
QuestionA simpler way? Pin
S. Senthil Kumar15-Jun-05 7:06
S. Senthil Kumar15-Jun-05 7:06 
AnswerRe: A simpler way? Pin
DXNuk15-Jun-05 21:43
DXNuk15-Jun-05 21:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.