Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# WinForms-使用视觉样式绘制大型DPI复选框/单选按钮等(Aero glass外观)_C#_.net_Winforms_Dpi_Visual Styles - Fatal编程技术网

C# WinForms-使用视觉样式绘制大型DPI复选框/单选按钮等(Aero glass外观)

C# WinForms-使用视觉样式绘制大型DPI复选框/单选按钮等(Aero glass外观),c#,.net,winforms,dpi,visual-styles,C#,.net,Winforms,Dpi,Visual Styles,我正试图找到一些方法,用视觉样式在WinForms中绘制大型DPI UI图示符。例如,如果我在windows中将DPI设置为100%,无论我如何尝试绘制一个样式化的单选按钮,结果都是这样的:如果我在windows中将DPI增加到150%,单选按钮看起来又漂亮又大: 如果不更改windows用户配置文件范围的DPI设置,我找不到任何方法来绘制上面的大型DPI单选按钮。我不想在任何其他应用程序中使用大型UI元素。以下是到目前为止我尝试过(未成功)的事情: 表单的自动缩放*属性-不影响UI图示符大小

我正试图找到一些方法,用视觉样式在WinForms中绘制大型DPI UI图示符。例如,如果我在windows中将DPI设置为100%,无论我如何尝试绘制一个样式化的单选按钮,结果都是这样的:如果我在windows中将DPI增加到150%,单选按钮看起来又漂亮又大:

如果不更改windows用户配置文件范围的DPI设置,我找不到任何方法来绘制上面的大型DPI单选按钮。我不想在任何其他应用程序中使用大型UI元素。以下是到目前为止我尝试过(未成功)的事情:

  • 表单的自动缩放*属性-不影响UI图示符大小
  • Graphics.ScaleTransform()在调用UI图示符绘制例程之前-如果启用了视觉样式,则不会影响UI图示符大小
  • ControlPaint方法-允许我绘制缩放的UI图示符,但仅在没有视觉样式的情况下()
  • 直接使用VisualStyleRenderer-无法(据我所知)更改绘制的UI图示符大小
我正在避免的解决方案:

  • 在可执行文件中嵌入预渲染的UI图示符-我需要我的应用程序遵循选定的windows用户配置文件范围的视觉样式,因此这种方法很快会变得非常复杂,很难维护,因为未来的windows版本将添加不同的视觉样式
  • 切换到WPF-client需要WinForms,所涉及的重构量将是荒谬的(这是一个相当大的应用程序)

那么,在上述两个限制条件下,有没有办法做到这一点?也许是某种方式欺骗了VisualStyleRenderer,或者是某种方式强迫单个进程使用DPI?欢迎提出任何想法、提示和WinAPI黑客。

对于任何好奇的人,我选择了“我正在避免的解决方案”#1。就我而言,我找不到绘制主题图示符的入口点:(