How to Apply Reflect Effects to a Text in VB.Net
This tutorial is all about How to Apply Reflect Effects to a Text in VB.Net.
In this tutorial I will teach you how to apply “Reflect Effect” to a text using Visual Basic 2008. In here, It reflects any kind of text that you will type at the bottom and you can also change its font size.
Others may think that reflected text is just easy to do. But, they were wrong. You have to take a closer look at each codes and calculate everything to make it accurate.
What is Visual Basic’s purpose?
The third-generation programming language was created to aid developers in the creation of Windows applications. It has a programming environment that allows programmers to write code in.exe or executable files.
They can also utilize it to create in-house front-end solutions for interacting with huge databases. Because the language allows for continuing changes, you can keep coding and revising your work as needed.
However, there are some limits to the Microsoft Visual Basic download. If you want to make applications that take a long time to process, this software isn’t for you.
That implies you won’t be able to use VB to create games or large apps because the system’s graphic interface requires a lot of memory and space.
Furthermore, the language is limited to Microsoft and does not support other operating systems.
What are the most important characteristics of Visual Basic?
Microsoft Visual Basic for Applications Download, unlike other programming languages, allows for speedier app creation. It has string processing capabilities and is compatible with C++, MFC, and F#.
Multi-targeting and the Windows Presentation Framework are also supported by the system, allowing developers to create a variety of Windows apps, desktop tools, metro-style programs, and hardware drivers.
Let’s begin:
Open Visual Basic 2008, create a new Windows Application and drag a PictureBox, a TextBox, a ComboBox and a NumericUpDown. It will look like this.

Double click the Form, go to the solution explorer and click the view code. After that, create a sub procedure for the reflect effects.
[vbnet]
Private Sub DrawReflectText()
Dim text_size As SizeF
Dim grafx As Graphics
Dim back_brush As Brush = Brushes.Gray
Dim fore_brush As Brush = Brushes.Black
Dim Fnt As New Font("Microsoft Sans Serif", NumericUpDown1.Value, FontStyle.Regular)
Dim my_state As GraphicsState 'STORE THE CURRENT STATE OF GRAPHICS
Dim x_location, y_location As Single 'USED FOR THE LOCATION
Dim text_height As Single
'CREATE A GRAPHIC OBJECT IN THE PICTURE BOX
grafx = PictureBox1.CreateGraphics()
'CLEAR THE GRAPHIC OBJECT
grafx.Clear(Color.White)
'SIZE IS REQUIRED TO DRAW THE TEXT
text_size = grafx.MeasureString(TextBox1.Text, Fnt)
'ELIMINATE THE REDUNDANT CALCULATIONS AFTER THE LOCATIONS' ONCE GET
x_location = (PictureBox1.Width - text_size.Width) / 2
y_location = (PictureBox1.Height - text_size.Height) / 2
'IN SCALING THE ENTIRE GRAPHIC OBJECTS, WE NEED TO REPOSITION THE ORIGIN OF
'IT (0,0) TO THE (xLocation, yLocation) POINT.
'IF NOT, WHEN YOU FLIP THE TEXT WITH A SCALING TRANSFORM,
'IT WILL DRAW REFLECTED TEXT AT (xLocation, -yLocation)THAT IS OUTSITDE THE VIEWABLE AREA
grafx.TranslateTransform(x_location, y_location)
Dim line_ascent As Integer
Dim line_spacing As Integer
Dim line_height As Single
'USE GETCELLASCENT TO CALCULATE THE HIEGHT ABOVE THE BASELINE.
'SINCE IT RETURNS A DESIGN METRIC VALUE YOU HAVE TO CONVERT IT
'INTO PIXELS AND SCALED FOR THE FONT SIZE.
line_ascent = Fnt.FontFamily.GetCellAscent(Fnt.Style)
line_spacing = Fnt.FontFamily.GetLineSpacing(Fnt.Style)
line_height = Fnt.GetHeight(grafx)
text_height = line_height * line_ascent / line_spacing
'THIS REFLECTS OVER THE LOWEST PORTION OF THE TEXT.
Dim line_descent As Integer 'REFLECT TO THE DESCENDING CHARACTERS
line_descent = Fnt.FontFamily.GetCellDescent(Fnt.Style)
text_height = line_height * (line_ascent + line_descent) / line_spacing
'DRAW THE REFLECTED ONE FIRST TO DEMONSTRATE THE USE OF GRAPHICS STATE OBJECT.
'A GRAPHICSSTATE OBJECT MAINTAINS THE GRAPHICS OBJECT.
'GRAPHICSSTATE SAVE FIRST.
my_state = grafx.Save()S
'USE THE SCALETRANSFORM WITH A NEGATIVE VALUE TO DRAW THE REFLECTIION
'AND USING -1 THE REFLECTED TEXT WILL NOT DISTORT.
grafx.ScaleTransform(1, -1.0F) ' REFLECTING THE Y DIRECTION
grafx.DrawString(TextBox1.Text, Fnt, back_brush, 0, -text_height)
'BEFORE IT TRANFORM RESET THE GRAPHICS STATE
grafx.Restore(my_state)
'MAIN TEXT DRAWN.
grafx.DrawString(TextBox1.Text, Fnt, fore_brush, 0, -text_height)
End Sub
[/vbnet]Then, create a sub procedure for the name of the effect. Clear and add the item in the ComboBox.
[vbnet]
Private Sub effectlist()
With ComboBox1.Items
.Clear()
.Add("Reflect")
End With
End Sub
[/vbnet]Then, create a sub procedure to draw the text.
[vbnet]
Private Sub draw_text()
effectlist()
If ComboBox1.SelectedItem Is Nothing Then
ComboBox1.SelectedIndex = 0
End If
Select Case ComboBox1.SelectedItem.ToString()
Case "Reflect"
Draw_Reflect_Text()
End Select
End Sub
[/vbnet]Lastly, create a sub procedure for the UIchange.
[vbnet]
Private Sub UIChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles TextBox1.TextChanged, NumericUpDown1.ValueChanged, PictureBox1.MouseHover
If NumericUpDown1.Value = 0 Then
NumericUpDown1.Value = 50
End If
draw_text()
End Sub
[/vbnet]You can download the complete sourcecode by clicking the “Download” button.
Readers might read also:
- How to Apply Block Effects to a Text in VB.Net
- How to Display and Count the Total Value of the Records in the DataGridView Using Visual Basic 2008
Frequently Asked Questions
What does this VB.NET tutorial cover?
Focused VB.NET language or library tutorial showing a single concept with working code. Use as a building block when assembling a larger system.
What Visual Studio and SQL Server versions does this VB.NET project require?
Most projects use VB.NET WinForms on .NET Framework 4.5+ with SQL Server 2012 Express or higher. To run: install Visual Studio 2019 / 2022 (Community is free) with the ‘Desktop development with .NET’ workload, install SQL Server Express + SSMS, open the .sln file, build, run.
How do I set up the database for this VB.NET project?
Open SQL Server Management Studio (SSMS) and connect to your SQL Server (e.g. localhost\SQLEXPRESS). Right-click Databases, choose Restore Database OR New Database then import the included .sql script. Update the connection string in App.config (or in code-behind Module) with your server name + credentials. Rebuild and run.
Can I use this VB.NET project for a BSIT capstone or thesis?
Yes, VB.NET is one of the most accepted languages by Philippine BSIT panels. Extend it: add role-based access (admin/staff/customer login redirect), Crystal Reports or RDLC reports, dashboards with Chart control, audit log, multi-branch support. Pair with Chapter 1-5 documentation matching your panel’s rubric.
Why am I getting ‘connection error’ or ‘cannot find SQL Server’?
Three common VB.NET issues: (1) Connection error: SQL Server isn’t running. Open SQL Server Configuration Manager and verify SQL Server (SQLEXPRESS) service is started. (2) Wrong server name in connection string. Try .\SQLEXPRESS, (local)\SQLEXPRESS, or your machine name. (3) Login failed: SQL Server is set to ‘Windows-only’ authentication. Switch to Mixed Mode in SSMS Server Properties, Security.
Where can I find more VB.NET projects with source code?
Browse the VB.NET Projects hub for the full library. For C# WinForms alternatives see C# Projects. For ASP.NET web alternatives see ASP.NET Projects. For BSIT capstone idea lists see 150 Best Capstone Project Ideas.
