Solved

How do I place a label behind a label

Posted on 2008-10-01
7
220 Views
Last Modified: 2013-11-26
I want to place one label behind the other so that I will get a shadowed effect. In Access, I was able to make the background of a two labels transparent and I would place the blue text label in on top of a white text label to get a shadowed effect for a label. I am having difficulty getting the desired effect.

Can this be done on a form in VB.NET in Visual Studio 2008? Is there a way to simply get a shadowed effect to text in another way?

Thanks,
Lenny Gray
0
Comment
Question by:LennyGray
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 22618501
I think this requirement deserves a custom control, inherited from the regular Label control.
You have to override the OnPaint event.
0
 
LVL 48

Expert Comment

by:jpaulino
ID: 22618751
You can do this in the Paint event of the label:
 

Private Sub Label1_Paint(...) Handles Label1.Paint
   e.Graphics.DrawString(Label1.Text, Label1.Font, Brushes.Blue, 2, 2) ' you have to play with this values
End Sub

Open in new window

0
 
LVL 10

Author Comment

by:LennyGray
ID: 22620354
Can you give me sample code for the custom control?

I use this technique quite frequently in my Access applications and I'd like to start building a library of routines to call.

Your code would be both educational and functional.

Please assume nothing in your example because I am a VBA programmer with a lot of experience but I am very new to VB.NET. I will need a lot of "hand-holding" while I learn this language.

Thanks.


Lenny
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 22620582
put the following code in a separated vb file, at your designer's toolbox a new custom control should appear, use it as a regular label
Imports System.Windows.Forms
 
Public Class ShadowLabel
    Inherits Label
 
    Private BackBrush As Brush
 
    Protected Overrides Sub OnCreateControl()
        MyBase.OnCreateControl()
        BackBrush = New SolidBrush(Me.BackColor)
    End Sub
 
    Protected Overrides Sub OnBackColorChanged(ByVal e As System.EventArgs)
        MyBase.OnBackColorChanged(e)
        BackBrush.Dispose()
        BackBrush = New SolidBrush(Me.BackColor)
    End Sub
 
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        Dim r As RectangleF = e.ClipRectangle
        Dim sf As New StringFormat
 
        Select Case Me.TextAlign
            Case ContentAlignment.BottomCenter
                sf.LineAlignment = StringAlignment.Center
                sf.Alignment = StringAlignment.Far
            Case ContentAlignment.BottomLeft
                sf.LineAlignment = StringAlignment.Near
                sf.Alignment = StringAlignment.Far
            Case ContentAlignment.BottomRight
                sf.LineAlignment = StringAlignment.Far
                sf.Alignment = StringAlignment.Far
            Case ContentAlignment.MiddleCenter
                sf.LineAlignment = StringAlignment.Center
                sf.Alignment = StringAlignment.Center
            Case ContentAlignment.MiddleLeft
                sf.LineAlignment = StringAlignment.Near
                sf.Alignment = StringAlignment.Center
            Case ContentAlignment.MiddleRight
                sf.LineAlignment = StringAlignment.Far
                sf.Alignment = StringAlignment.Center
            Case ContentAlignment.TopCenter
                sf.LineAlignment = StringAlignment.Center
                sf.Alignment = StringAlignment.Near
            Case ContentAlignment.TopLeft
                sf.LineAlignment = StringAlignment.Near
                sf.Alignment = StringAlignment.Near
            Case ContentAlignment.TopRight
                sf.LineAlignment = StringAlignment.Far
                sf.Alignment = StringAlignment.Near
        End Select
 
        e.Graphics.FillRectangle(Me.BackBrush, e.ClipRectangle)
        e.Graphics.DrawString(Me.Text, Me.Font, Brushes.White, r, sf)
        r.Offset(-1, -1)
        e.Graphics.DrawString(Me.Text, Me.Font, Brushes.Blue, r, sf)
    End Sub
End Class

Open in new window

0
 
LVL 10

Author Comment

by:LennyGray
ID: 22627455
What do you mean by "put the following code in a separated vb file, at your designer's toolbox a new custom control should appear, use it as a regular label".

I put this into a class in my application but it did not show up in the toolbox, so I am doing something dumb.

Sorry for my lack of experience with this.

Lenny
0
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 500 total points
ID: 22627624
save the snippet in a separated class file, lets say ShadowLabel.vb
Add this file to your project
If done well, when you are designing a form, the ShadowLabel control will appear inside the toolbox, at the Custom controls section
0
 
LVL 10

Author Closing Comment

by:LennyGray
ID: 31502138
Thanks...It worked!!

I did not know to add it to the project.

I have a long way to go.

Thanks again!

Lenny Gray
0

Featured Post

Guide to Performance: Optimization & Monitoring

Nowadays, monitoring is a mixture of tools, systems, and codes—making it a very complex process. And with this complexity, comes variables for failure. Get DZone’s new Guide to Performance to learn how to proactively find these variables and solve them before a disruption occurs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This video Micro Tutorial shows how to password-protect PDF files with free software. Many software products can do this, such as Adobe Acrobat (but not Adobe Reader), Nuance PaperPort, and Nuance Power PDF, but they are not free products. This vide…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…

724 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question