Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在关闭视觉样式的情况下绘制UI元素?_C#_Winforms_Treeview_Ownerdrawn - Fatal编程技术网

C# 如何在关闭视觉样式的情况下绘制UI元素?

C# 如何在关闭视觉样式的情况下绘制UI元素?,c#,winforms,treeview,ownerdrawn,C#,Winforms,Treeview,Ownerdrawn,我有一个所有者绘制的控件,需要在其中绘制树视图的扩展框(“加号/减号”)。打开视觉样式后,只需为适当的VisualStyleElement创建渲染器即可: 禁用视觉样式时是否可能达到类似效果?我知道有一个ControlPaint类可以绘制整个控件,但是如何绘制(并获得大小)TreeView控件的一部分呢?如果没有VisualStyles,我认为加减控件只是DrawRectangle和DrawLine方法调用 矩形部分看起来像是使用了SystemColors.Control颜色,加号/减号部分看起

我有一个所有者绘制的控件,需要在其中绘制树视图的扩展框(“加号/减号”)。打开视觉样式后,只需为适当的VisualStyleElement创建渲染器即可:


禁用视觉样式时是否可能达到类似效果?我知道有一个ControlPaint类可以绘制整个控件,但是如何绘制(并获得大小)TreeView控件的一部分呢?

如果没有VisualStyles,我认为加减控件只是DrawRectangle和DrawLine方法调用

矩形部分看起来像是使用了
SystemColors.Control
颜色,加号/减号部分看起来像
SystemColors.ControlText
(或黑色)

我希望有一些“更高层次”的方法,但这是正确的。
VisualStyleElement element = VisualStyleElement.TreeView.Glyph.Opened
VisualStyleRenderer renderer = new VisualStyleRenderer( element );
Size size = renderer.GetPartSize( graphics, ThemeSizeType.True );
...
renderer.DrawBackground( graphics, someRect );