Simple question

  • Thread starter Thread starter Gregory Khra
  • Start date Start date
G

Gregory Khra

I need to draw a text string on the form. In order to do it I create Paint
event handler and place a command
e.Graphics.DrawString(...)
Unfortunately if other controls on the form overlap with this string, they
hide it.
How can I make the string appear on top of other controls? (other controls
are defined at design time and I don't paint them)
 
You can draw the string directly onto the desktop...

You need to import the GetDC and ReleaseDC methods like so:
[DllImport("User32.dll")]

public static extern IntPtr GetDC(IntPtr wnd);



[DllImport("User32.dll")]

public static extern void ReleaseDC(IntPtr dc);

then you can get the DC, greate a Graphics for it and draw on it..

IntPtr dc=GetDC(IntPtr.Zero);
Graphics g=Graphics.FromHdc(dc);

//draw on the desktop here, remembering to convert client pixels to
screen pixels

g.Dispose();
ReleaseDC(dc);


--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.
 
Your suggestion will probably help, but I was hoping there is more straight
forward way. All I need is to make my Paint handler execute after other
controls have been painted. Apparently by default it executes before. Is
there a way to change this order?
Gregory
 
Back
Top