Listing 9.15: The StopTimer Method
Public Sub StopTimer()
If Running Then
Timer1.Enabled = False
Running = False
End If
End Sub
As with the StartTimer method, the alarm stops only if it’s running. If that’s the case, the code
disables the Timer control and sets the Runningvariable to False.
Next declare the TimeOut event with the following statement, which must appear outside any
Public Event TimeOut()
The TimeOut event doesn’t pass any information to the caller; it simply notifies the application
that the current instance of the Alarm control has timed off. To raise the event, you must insert the
appropriate code in the Timer’s Tick event handler. In the same event handler, which is invoked every
second, we must also update the display. If the control is counting down, we create a TimeSpan
object with the difference between the current time and the AlarmTime property. If the control is
counting up, we create another TimeSpan object with the difference between the time the control
was started and the current time (the time elapsed since the alarm was started). Listing 9.16 is the
code of the Timer control’s Tick event hander.
Listing 9.16: The Timer’s Tick Event Handler
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Dim TimeDiff As TimeSpan
TimeDiff = m_AlarmTime.Subtract(Now)
If TimeDiff.Seconds < 0 Then
StopNow = True
Timer1.Enabled = False
Label1.Text = “*****”
RaiseEvent TimeOut
Exit Sub
End If
If Not m_CountDown Then
‘ the following statement calculates the difference 
‘ between current time and alarm time and adds 1 second
TimeDiff = Now.TimeOfDay.Subtract(startTime.TimeOfDay). _
Add(New TimeSpan(0, 0, 1))
End If
Label1.Text = Format(TimeDiff.TotalHours, “00”) & “:” & _
Format(TimeDiff.Minutes, “00”) & “:” & _
Format(TimeDiff.Seconds, “00”)
End Sub
Copyright ©2002 SYBEX, Inc., Alameda, CA
Convert pdf to tiff using c# - Convert PDF to tiff images in, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
how to convert pdf into tiff file; pdf to tiff online converter
Convert pdf to tiff using c# - VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
convert pdf to multipage tiff; convert pdf to grayscale tiff
The code also compares the current date/time to the setting of the m_AlarmTimeproperty, and if
the difference is negative, it means that the alarm must go off. If so, it raises the TimeOut event.
Designing Irregularly Shaped Controls
With VB.NET it’s quite easy to create irregularly shaped controls. It’s possible to create irregularly
shaped forms too, but, unlike irregularly shaped controls, an irregularly shaped form is still quite
uncommon. By the way, you can also create semitransparent forms with VB.NET—if you can come
up with a good reason to do so.
To change the default shape of a custom control, you must use the Region object. This is another
graphics-related object that specifies a closed area. You can even use Bezier curves to make highly
unusual and smooth shapes for your controls. In this section, we’ll do something less ambitious:
We’ll create controls with the shape of an ellipse, as shown in Figure 9.9.
You can turn any control to any shape you like by creating the appropriate Region object and
then applying it to the Region property of the control. This must take place from within the con-
trol’s Load event. Listing 9.17 shows the statements that change the shape of the control.
Listing 9.17: Creating a Non-Rectangular Control
Private Sub RoundButton_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim G As Graphics
G = Me.CreateGraphics
Dim roundPath As New GraphicsPath()
Dim R As New Rectangle(0, 0, Me.Width, Me.Height)
Me.Region = New Region(roundPath)
Me.CreateGraphics.DrawEllipse(New Pen(Color.DarkGray, 3), R)
End Sub
Figure 9.9
Two instances of 
an ellipse-shaped
Copyright ©2002 SYBEX, Inc., Alameda, CA
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in
Convert PDF to JPEG Using C#.NET. Add necessary references: RasterEdge.Imaging.Basic. dll. RasterEdge.Imaging.Basic.Codec.dll. RasterEdge.Imaging.Drawing.dll.
pdf to tiff batch converter; pdf to tiff conversion using
C# TIFF: TIFF Editor SDK to Read & Manipulate TIFF File Using C#.
Convert Tiff file to bmp, gif, png, jpeg, and scanned PDF to Tiff, like Word, Excel, PowerPoint, PDF, and images. & decode over 20+ barcodes from Tiff file in C#
convert pdf into tiff; online pdf to tiff
First, we retrieve the Graphics object of the UserControl object and store it in the Gvariable.
Then we create a GraphicsPath, the roundPathobject, and add an ellipse to it. The ellipse is based on
the rectangle that encloses the ellipse. The Robject is used temporarily to specify the ellipse. The
new path is then used to create a Region object, which is assigned to the Region property of the
UserControl object. This gives our control the shape of an ellipse. The last statement draws an
ellipse with the dark gray pen around the perimeter of the control. This step is optional, but it’s
equivalent to adding a border to the control.
To demonstrate the design of an irregularly shaped control, we’ll build the RoundButton control,
which was shown in Figure 9.9 earlier. You can find this control along with its test form in the
NonRectangular project on the CD. The most important section of the control’s code is the Load
event handler, which was shown in Listing 9.17.
Irregularly shaped controls are used in fancy interfaces, and they usually react to movement of the
mouse. The control of Figure 9.9 changes its background color and caption when the mouse is over
the control. Listing 9.18 shows the code behind the control’s MouseEnter and MouseLeave events.
When the mouse enters the control’s area (this is detected by the control automatically—you won’t
have to write a single line of code for it), the currentStatevariable is set to Active, the control’s back-
ground color to green, and its caption to “Play.” Similar actions take place in the control’s Mouse-
Leave event handler: the control’s background color changes to red and its caption to “Pause”. In
addition, each time the control switches state (from Pause to Play or vice versa), one of the Now-
Playing and NowPausing events is fired.
Listing 9.18: The RoundButton Control’s MouseEnter and MouseLeave Events
Private Sub RoundButton_MouseEnter(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.MouseEnter
If currentState = State.Active Then
Me.BackColor = Color.Green
currentCaption = “Play”
RaiseEvent NowPlaying()
End If
End Sub
Private Sub RoundButton_MouseLeave(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.MouseLeave
If currentState = State.Active Then
Me.BackColor = Color.Red
currentCaption = “Pause”
RaiseEvent NowPausing()
End If
End Sub
These two events set up the appropriate variables, and the drawing of the control takes place in
the OnPaint method, which is shown in Listing 9.19.
Copyright ©2002 SYBEX, Inc., Alameda, CA
C# Create PDF from Tiff Library to convert tif images to PDF in C#
TIFF file. TIFFDocument doc = new TIFFDocument(inputFilePath); // Convert loaded TIFF file to PDF document. doc.ConvertToDocument
program convert pdf to tiff; converting pdf to tiff file
C# PDF Convert to Word SDK: Convert PDF to Word library in
DocumentType.DOCX DocumentType.TIFF. zoomValue, The magnification of the original PDF page size. Description: Convert to DOCX/TIFF with specified resolution and
pdf to tiff conversion online; pdf to tiff converter
Listing 9.19: The RoundButton Control’s OnPaint Method
Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
Dim roundPath As New GraphicsPath()
Dim R As New Rectangle(0, 0, Me.Width, Me.Height)
Me.Region = New Region(roundPath)
pe.Graphics.DrawEllipse(New Pen(Color.DarkGray, 3), R)
Dim fnt As Font
If currentState = State.Active Then
If Me.BackColor.Equals(Color.Silver) Then Me.BackColor = Color.Green
fnt = New Font(“Verdana”, 24, FontStyle.Bold)
fnt = New Font(“Verdana”, 14, FontStyle.Regular)
End If
Dim X As Integer = (Me.Width - pe.Graphics.MeasureString( _
currentCaption, fnt).Width) / 2
Dim Y As Integer = (Me.Height - pe.Graphics.MeasureString( _
currentCaption, fnt).Height) / 2
pe.Graphics.DrawString(currentCaption, fnt, Brushes.White, X, Y)
End Sub
The OnPaint method uses graphics methods to center the string on the control. They’re the same
methods we used in the example of the user-drawn control, earlier in this chapter. The drawing methods
are discussed in detail in Chapter 14.
The code makes use of the currentStatevariable, which can take on two values: Active and Inactive.
These two values are members of the State enumeration, which is shown next:
Public Enum State
End Enum
The control can be in two states. In the Active state, it behaves as described. In the Inactive state,
the control turns gray and doesn’t respond to the movement of the mouse. In addition, its caption
becomes “Resume” and the user can switch between states by clicking the control. The control’s
click event handler is shown next:
Private Sub RoundButton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Click
If currentState = State.Active Then
currentState = State.Inactive
Me.BackColor = Color.Silver
currentCaption = “Resume”
currentState = State.Active
currentCaption = “Play”
Copyright ©2002 SYBEX, Inc., Alameda, CA
C# PDF Convert to HTML SDK: Convert PDF to html files in
library control is a 100% clean .NET document image solution, which is designed to help .NET developers convert PDF to HTML webpage using simple C# code.
converting pdf to tiff; .net pdf to tiff converter
C# PDF Convert to SVG SDK: Convert PDF to SVG files in, ASP
C#.NET PDF SDK - Convert PDF to SVG in C#.NET. C# Programming Language to Render & Convert PDF to SVG Using C#.NET XDoc.PDF Converter Control.
pdf to tiff open source c#; convert multipage pdf to tiff
End If
End Sub
The code changes the control’s state and, when the control is switched to the Inactive state, it fills
it with a gray shade. To restore the control to its Active state, the user must click the control again.
The test form of the project shows how the RoundButton control behaves on a form. You can
use the techniques described in this section to make a series of round controls to emulate the look of
VCR controls. When the mouse hovers over the control, you can display the icon of the button
(Play, Pause, Resume, and so on). When the mouse moves outside the area of the control, you can
display the same icon with washed-out colors. Or you can place a nice colored dot on the control,
which will be green when the button is pressed and red when it’s released.
The control raises two events to notify the application that its state has changed. The two event
names must be declared outside any procedure with the following statements:
Public Event NowPlaying()
Public Event NowPausing()
The two events are raised from within the MouseEnter and MouseLeave event handlers with the
following statements:
RaiseEvent NowPlaying()
RaiseEvent NowPaused()
To test these events, switch to the test form and enter the following statements in the two event
handlers of the RoundButton control. They’re two simple statements that display the control’s cur-
rent status on the form’s title bar. They simply demonstrate how to capture the changes in the con-
trol’s status and use it in the host application to control other activities:
Private Sub RoundButton1_NowPlaying() Handles RoundButton1.NowPlaying
Me.Text = “Playing...”
End Sub
Private Sub RoundButton1_NowPausing() Handles RoundButton1.NowPausing
Me.Text = “Paused...”
End Sub
In Chapter 14, you’ll learn more about shapes and paths, and you may wish to experiment with
other oddly shaped controls. How about a progress indicator control that looks like a thermometer?
Building Owner-Drawn Controls
In this section, I’ll show a couple of examples that demonstrate how to customize existing controls.
You’re not going to build new custom controls in this section; actually, you’ll hook custom code
into certain events of a control to direct the rendering of the control. Some of the .NET Windows
controls can be customized far more than it is possible through their properties. These are the list-
like controls (menus, ListBox controls), and they allow you to supply your own code for drawing
each item. Using this technique, you can create a menu with a separate font for each menu item, a
ListBox control with alternating background colors, and so on. You can even put bitmaps on the
Copyright ©2002 SYBEX, Inc., Alameda, CA
C# WPF Viewer: Load, View, Convert, Annotate and Edit Tiff
By using RasterEdge WPF Viewer for C# .NET, users can perform Tiff viewing and multiple Tiff image manipulation functionalities. convert Tiff file to PDF, add
how to convert pdf to tiff image; pdf to tiff online
C# WinForms Viewer: Load, View, Convert, Annotate and Edit Tiff
By using RasterEdge WinForms Viewer, users can load Tiff to WinForms processing Tiff while in preview, such as convert Tiff file to PDF, add annotations
how to convert pdf to tiff on; c# convert pdf to tiff
background of each item, draw the text in any colors, and create items of varying heights. This is a
very interesting technique, because without it, as you recall from our discussion of the ListBox con-
trol, all items have the same height and you must make each control wide enough to fit the longest
item (if this is known at design time).
To create an owner-drawn control, you must program two events: the MeasureItem and Draw-
Item events. As you may have noticed, you can only interfere with the drawing process of controls
that display items in rectangles (like the MenuItem and ListBox controls). The MeasureItem event is
where you decide about the dimensions of the rectangle where the drawing will take place.
These two events don’t take place unless you set the DrawMode property of the control. Since only
controls that expose the DrawMode property can be owner-drawn, you have a quick way of figuring
out whether a control’s appearance can be customized with the techniques discussed in this section.
This property can be set to Normal (the control is draws its own surface), OwnerDrawnFixed (you can
draw the control, but the height of the drawing area remains fixed), or OwnerDrawnVariable (you
can draw the control and use a different height for each item). The settings of the DrawMode shown
here apply to the ListBox control. The MenuItem control provides the OwnerDraw mode, whose
settings are True (you’re responsible for rendering the item’s rectangle) or False. Let’s start by building
an owner-drawn menu.
Designing Owner-Drawn Menus
When a menu item’s OwnerDraw property is set to True, the following events are fired every time
the item is about to be drawn: first the MeasureItem event, then the DrawItem event. In the first
event, you can find out the properties of the item and set up the size of the rectangle in which the
menu item will be rendered. In the second event, you must insert the code to draw the item.
The second argument of both events, the ubiquitous eargument, exposes the Graphics object,
which represents the area on which the item will be drawn. In the MeasureItem event’s handler, you
can’t draw anything. You can calculate the dimensions of the rectangle that delimits the drawing you
want to create and set the eargument’s ItemWidth and ItemHeight properties respectively.
In the DrawItem event’s handler, you can call any of the Graphic object’s drawing commands to
render anything on the item’s rectangle. You can draw text in any font, style, or size, draw simple
shapes, or even place a small bitmap in the item’s rectangle. To demonstrate the design of owner-
drawn menus, I’ve included the OwnerDrawnMenu project on the CD, which creates a simple menu
with font names. Each name is rendered in the corresponding font, so that you can see what the text
will look like when rendered in this font. The form of the OwnerDrawnMenu project is shown in
Figure 9.10.
Figure 9.10
A simple owner-
drawn menu
Copyright ©2002 SYBEX, Inc., Alameda, CA
First, you must design the menu as usual and set the OwnerDrawn property of each menu item to
True. Give meaningful names to all items, so that you can simplify your code.
Then insert the code of the Listing 9.20 in the MeasureItem and DrawItem event handlers of
each owner-drawn menu item.
Listing 9.20: Programming the MeasureItem and DrawItem Events
Private Sub FontVerdana_MeasureItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MeasureItemEventArgs) _
Handles FontVerdana.MeasureItem
Dim fnt As New Font(“Verdana”, 12, FontStyle.Regular)
Dim itemSize As SizeF
itemSize = e.Graphics.MeasureString(“Verdana”, fnt)
e.ItemHeight = itemSize.Height
e.ItemWidth = itemSize.Width
End Sub
Private Sub FontVerdana_DrawItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DrawItemEventArgs) _
Handles FontVerdana.DrawItem
Dim fnt As New Font(“Verdana”, 12, FontStyle.Regular)
Dim R As New RectangleF(e.Bounds.X, e.Bounds.Y, _
e.Bounds.Width, e.Bounds.Height)
Dim brush As SolidBrush
e.Graphics.FillRectangle(Brushes.PaleTurquoise, R)
e.Graphics.DrawString(“Verdana”, fnt, Brushes.White, R)
End Sub
I’m only showing the code for the first menu item; the others are identical. In the MeasureItem
event handler, the code calls the MeasureString method to find out the dimensions of the item’s cap-
tion when rendered in its font and then sets the dimensions of the item’s rectangle in the menu. The
code in the DrawItem event handler draws the caption in the item’s rectangle. It uses a white solid
brush and sets the item’s background color to red. The string is rendered in white color. The last
item (the handwriting font) is rendered in blue color on a yellow background.
The code is quite trivial really, and all the drawing methods will be discussed in detail in Chapter 14.
You can return to this project after reading about the drawing methods and create more elaborate
owner-drawn menus.
Designing Owner-Drawn ListBox Controls
In this section, we’ll look at a similar technique for designing owner-drawn ListBox controls. You
may have to create owner-drawn ListBoxes if you want to use different colors or fonts for differ-
ent items, or to populate the list with items of widely different lengths. The example you’ll build
in this section, shown in Figure 9.11, uses an alternating background color, and each item has a
different height, depending on the string it holds. Lengthy strings are broken into multiple lines at
word boundaries. Since you’re responsible for breaking the string into lines, you can use any other
Copyright ©2002 SYBEX, Inc., Alameda, CA
technique—for example, you can place an ellipsis to indicate that the string is too long to fit on
the control, or use a smaller font, and so on.
The fancy ListBox of Figure 9.11 was created with the OwnerDrawnList project, which you
will find on the CD. Or you can follow the steps outlined in this section to build it from scratch.
To custom-draw the items on a ListBox control (or a ComboBox, for that matter), you use the
MeasureItem event to calculate the item’s dimensions and the DrawItem event to actually draw the
item. Each item is a rectangle that exposes a Graphics object, and you can call any of the Graphics
object’s drawing methods to draw on the item’s area. The drawing techniques we’ll use in this
example are similar to the ones we used in the previous section, but once you learn more about the
drawing methods in Chapter 14, you’ll be able to create even more elaborate designs than the ones
shown here.
The items to be added to the list are stored in an ArrayList, which is populated in the form’s
Load event handler. Each time you add a new item to the ListBox control, it’s first added to the
ArrayList, then to the control. The reason for doing this is because at the time the MeasureItem
event is fired, the item isn’t part of the list yet and there’s no simple method to access the new
item—short of using a global variable. It’s a minor inconvenience, and if you experiment with the
OwnerDrawnList project, you may be able to find a work-around.
Each time an item is about to be drawn, the MeasureString and DrawString events are fired, in
this order. In the MeasureString event handler, we set the dimensions of the item with the statements
shown in Listing 9.21.
Listing 9.21: Setting Up an Item’s Rectangle in an Owner-Drawn ListBox Control
Private Sub ListBox1_MeasureItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MeasureItemEventArgs) _
Handles ListBox1.MeasureItem
Dim itmSize As SizeF
Dim S As New SizeF(ListBox1.Width, 200)
itmSize = e.Graphics.MeasureString(items(e.Index).ToString, fnt, S)
e.ItemHeight = itmSize.Height
e.ItemWidth = itmSize.Width
End Sub
Figure 9.11
An unusual, but
quite functional
ListBox control
Copyright ©2002 SYBEX, Inc., Alameda, CA
This time we’re using a different form of the MeasureString method. This form accepts as argu-
ments a string, the font in which the string will be rendered, and a SizeF object. The SizeF object
contains two members, the Width and Height members. These two members are used to pass to the
method information about the area in which we want to print the string. In our example, we’re going
to print the string in a rectangle that’s as wide as the ListBox control and as tall as needed to fit the
entire string. I’m using a height of 200 pixels (enough the fit the longest string users may throw at
the control). Upon return, the MeasureString method sets the members of the SizeF object to the
width and height actually required to print the string. What we get back is the height of a rectangle
in which the string will fit.
The two members of the SizeF object are then used to set the dimensions of the current item
). We’ve set the dimensions of the item, and we’re ready
to draw it. The custom rendering of the current item takes place in the ItemDraw event handler,
which is shown in Listing 9.22.
Listing 9.22: Drawing an Item in an Owner-Drawn ListBox Control
Private Sub ListBox1_DrawItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DrawItemEventArgs) _
Handles ListBox1.DrawItem
If e.Index = -1 Then Exit Sub
Dim txtBrush As SolidBrush
Dim bgBrush As SolidBrush
Dim txtfnt As Font
If e.Index / 2 = CInt(e.Index / 2) Then
‘ color even numbered items
txtBrush = New SolidBrush(Color.Blue)
bgBrush = New SolidBrush(Color.LightYellow)
‘ color odd numbered items
txtBrush = New SolidBrush(Color.Blue)
bgBrush = New SolidBrush(Color.Cyan)
End If
If e.State And DrawItemState.Selected Then
‘ use red color and bold for the selected item 
txtBrush = New SolidBrush(Color.Red)
txtfnt = New Font(fnt.Name, fnt.Size, FontStyle.Bold)
txtfnt = fnt
End If
e.Graphics.FillRectangle(bgBrush, e.Bounds)
e.Graphics.DrawRectangle(Pens.Black, e.Bounds)
Dim R As New RectangleF(e.Bounds.X, e.Bounds.Y, _
e.Bounds.Width, e.Bounds.Height)
e.Graphics.DrawString(items(e.Index).ToString, txtfnt, txtBrush, R)
End Sub
Copyright ©2002 SYBEX, Inc., Alameda, CA
To test the enhanced ListBox control, place two buttons on the form, as shown in Figure 9.11.
The Add New Item button prompts the user for a new item (a string) and adds it to the items
ArrayList. Then it calls the Add method of the 
collection to add the new item to the
ListBox control. The reason you must add the new item to the ArrayList collection is that you can’t
directly add items to the control. As you recall, the MeasureItem event adds one element of the
ArrayList to the control at a time. Since both the MeasureItem and DrawItem methods pick up the
item to be added from the ArrayList collection, you need not specify any argument to the 
method. Listing 9.23 provides the code that adds a new item to the list.
Listing 9.23: Adding an Item to the List at Runtime
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Dim newItem As String
newItem = InputBox(“Enter item to add to the list”)
End Sub
The last feature in the test application is the reporting of the selected item when the user double-
clicks an item. I’ve included this code to demonstrate that, other than some custom drawing, the
owner-drawn ListBox control carries with it all the functionality of the original ListBox control. It
fires the same events, reports the same properties, and can be manipulated with the same methods.
When the user double-clicks the ListBox control, the code shown in Listing 9.24 is executed.
This code retrieves SelectedIndex and SelectedItem properties and reports them to the application.
Listing 9.24: Retrieving the Selected Item from the Owner-Drawn ListBox Control
Private Sub ListBox1_DoubleClick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
MsgBox(“Item at location “ & ListBox1.SelectedIndex & _
“ is “ & vbCrLf & ListBox1.SelectedItem)
End Sub
Using ActiveX Controls
Before ending this chapter, I would like to show you how to use ActiveX control with .NET. If
you’re new to VB, ActiveX controls were the old Windows controls used with previous versions of
VB. There are tons of ActiveX controls out there, and many of you are already using them in your
projects. You can continue using them with your .NET projects as well. At this point, there’s a
Copyright ©2002 SYBEX, Inc., Alameda, CA
Documents you may be interested
Documents you may be interested