I think that what you see is a driver problem. I have a similar
problem with a Matrox G400 Dual Head card.

In my case, switching from 32-bit to 24-bit mode solves the
problem and switching to another pc with another video card
also solves the problem.

Regards
Henrik

> -----Original Message-----
> From: Luis Abreu [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, May 21, 2002 2:18 AM
> To: [EMAIL PROTECTED]
> Subject: help with owner draw menus
>
>
> Hello all.
>
> I'm starting to learn .net and I'm using c#. I'm trying to
> build an owner draw menu,  which should look like VS.net. So
> I've looked for examples and I've found some.  The problem
> I'm getting is that when the mouse is over one of the items
> in the menu I'm getting a broke line in the place where the
> mouse is standing (I'm using drawrectangle to draw a blue
> rect around the selected item). I think that there's
> something wrong with this line of code:
>
> gr.DrawRectangle( new Pen( Color.DarkBlue ), rect.X, rect.Y,
> rect.Width - 1 , rect.Height - 1 );
>
> I'm saying this because if I replace it with this one:
>
> ControlPaint.DrawBorder3D( gr, rect.Left, rect.Top,
> rect.Width,rect.Height, Border3DStyle.Flat, Border3DSide.Top
> | Border3DSide.Left | Border3DSide.Right | Border3DSide.Bottom );
>
> it works ok (no lines get broken when the mouse is over the items).
>
> What  I don't understand is why this doesn't happen top the
> top menu item (only happens to the children of the main menu item).
>
> Has anyone found anything like this?
>
> This link has 2 images showing the results of what happens
> when I use each of the functions:
>
> http://members.netmadeira.com/luisabreu/error/errorc.htm
>
> Here is the code responsible for drawing the background of the menu
> items:
>
> protected void DrawBackground( Graphics gr, Rectangle rect,
> DrawItemState state, bool isTopLevel, bool hasIcon ) { bool
> selected = ( state & DrawItemState.Selected ) > 0;
> bool over     = ( state & DrawItemState.HotLight ) > 0;
> if( selected || over )
> {
>     //check if top level
>     if( isTopLevel && selected)
>     {
>     gr.FillRectangle( new SolidBrush(
> SystemColors.ControlLight ), rect );
>     ControlPaint.DrawBorder3D( gr, rect.Left, rect.Top, rect.Width,
>                                rect.Height, Border3DStyle.Flat,
>                                Border3DSide.Top |
> Border3DSide.Left | Border3DSide.Right );
>    }
>    else
>    {
>     Trace.Write ("top1");
>     gr.FillRectangle( new SolidBrush( Color.FromArgb(173,
> 173, 209) ), rect );
>     /*
>     HERE IS WHERE I'M GETTING THAT NASTY ERROR
>     */
>     gr.DrawRectangle( new Pen( Color.DarkBlue ), rect.X,
>     rect.Y, rect.Width - 1 , rect.Height - 1 );
>     /*ControlPaint.DrawBorder3D( gr, rect.Left, rect.Top, rect.Width,
>                                 rect.Height, Border3DStyle.Flat,
>                                 Border3DSide.Top |
> Border3DSide.Left | Border3DSide.Right | Border3DSide.Bottom );*/
>
>    }
> else
> {
>     if( !isTopLevel )
>     {
>       Trace.Write ("top2");
>       gr.FillRectangle( new SolidBrush(
> SystemColors.ControlLight ), rect );
>                         rect.X     += bitmap_size + 5;
>                         rect.Width -= bitmap_size + 5;
>       gr.FillRectangle( new SolidBrush(
> SystemColors.ControlLightLight ), rect );
>     }
>     else
>     {
>         gr.FillRectangle( SystemBrushes.Control, rect );
>     }
> }
> }
>
>
>
> Regards,
> Luis Abreu
> http://www.luisabreu.go.cc/
> mailto:[EMAIL PROTECTED]
> ---------------------------------------------
> "Those who give up never win,
> and those who win never give up!", Luis Abreu
> ---------------------------------------------
>
> You can read messages from the DOTNET archive, unsubscribe
> from DOTNET, or subscribe to other DevelopMentor lists at
> http://discuss.develop.com.
>

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to