How to get control clipping region?

J

Julie

How do you retrieve the visible clipping region for a control?

I have a control where I do some on-screen drawing (specifically
ControlPaint.DrawReversibleLine()), however I need to clip the line to the
visible bounds of my control.

Obviously, the client rect is simple enough to retrieve, but what I need to do
is to clip the line segment to only that portion of the control that is
visible, which may _not_ correspond to the client rect if there is some other
application window partially obscuring my control.

In my tests, Control.CreateGraphics().ClipBounds() is returning an 'infinite'
rectangle.

Anyone have any pointers on how to do what I want in .Net?
 
B

Bob Powell [MVP]

DrawReversibleLine is horrible because it draws on the desktop. If you can
do an alpha-blended selection as is recommended by GDI+ you also have much
better control over the clipping region.

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

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.
 
J

Julie

Bob said:
DrawReversibleLine is horrible because it draws on the desktop. If you can
do an alpha-blended selection as is recommended by GDI+ you also have much
better control over the clipping region.

I ended up just disassembling DrawReversibleLine and (re)implementing the same
technique, drawing to the control's graphics port instead. Works as needed.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top