C# 使用自定义颜色替换/重画文本框三维边框
情景 在WinForms中,当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边框以实现我的目的?我的意思是替换/隐藏/重画上面图像的白色
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的一部分创建时,边界实际上是被设置的……而且我不确定您是否试图克服文本框边界,而是试图改变应用/使用用户主题的方式。由于没有主题,它们的正常外观有些不同: