C# 使用自定义颜色替换/重画文本框三维边框

C# 使用自定义颜色替换/重画文本框三维边框,c#,.net,vb.net,user-controls,gdi+,C#,.net,Vb.net,User Controls,Gdi+,情景 在WinForms中,当BorderStyle属性设置为Flat、None或Fixed3D时,我对文本框进行了子分类,以使用纯色绘制自己的边框 问题 当设置了我的文本框属性Fixed3D时,尝试使用颜色绘制边框时,边框未正确绘制在曲面上: 您在图像中看到的是一个缩放的文本框,其中包含: 背景色=黑色 BorderStyle=Fixed3D(白色的东西) 红色的东西是我的边界意图 问题: 在C#或VB.Net中,如何替换/重画3D边框以实现我的目的?我的意思是替换/隐藏/重画上面图像的白色

情景

WinForms中,当
BorderStyle
属性设置为
Flat
None
Fixed3D
时,我对文本框进行了子分类,以使用纯色绘制自己的边框

问题

当设置了我的文本框属性
Fixed3D
时,尝试使用颜色绘制边框时,边框未正确绘制在曲面上:

您在图像中看到的是一个缩放的文本框,其中包含:

背景色=黑色

BorderStyle=Fixed3D(白色的东西)

红色的东西是我的边界意图

问题:

在C#或VB.Net中,如何替换/重画3D边框以实现我的目的?我的意思是替换/隐藏/重画上面图像的白色边框

代码

这是我在
OnPaint
方法上尝试的:

    Using g As Graphics = Graphics.FromHwnd(Me.Handle)

        ' Dim rect As Rectangle = New Rectangle(0, 0, Me.Width, Me.Height)

        ' Dim pen As New Pen(Color.Black, 2)
        ' pen.Alignment = PenAlignment.Inset
        ' g.DrawRectangle(pen, rect)

        ControlPaint.DrawBorder(Graphics.FromHwnd(Me.Handle),
                                Me.ClientRectangle,
                                Me.borderColor1,
                                ButtonBorderStyle.Solid)

    End Using

我也尝试过使用
DrawBorder3D
方法,但是它的任何重载都接受一种颜色?

你看过以下内容吗?我认为这可能会对@DJ KRAZE非常有帮助!,但由于我在GDI+方面的经验不足,我无法注意到这些方法中是否有一种可以帮助我,无论如何,我会深入其中,看看其中是否有一种可以帮助我。这种方法不会很好。您正在文本区域内而不是在控件周围绘制。当文本框窗口作为CreateParams的一部分创建时,边界实际上是被设置的……而且我不确定您是否试图克服文本框边界,而是试图改变应用/使用用户主题的方式。由于没有主题,它们的正常外观有些不同: