+ -
当前位置:首页 → 问答吧 → 如何在程序中获取CheckBox的几种状态图标

如何在程序中获取CheckBox的几种状态图标

时间:2011-12-11

来源:互联网

我说的可不是截图方式,是想在软件运行时如何获取系统CheckBox的三种样式图。比如在xp系统上运行时获取的是绿色的钩与绿色的填充块(半选),在win 7中图形就变了,所以我想以程序方式获取。当然是用在自定义控件上,为的是跟系统样式保持一致。

作者: cnwin   发布时间: 2011-12-11

获取不到……

作者: bunliney   发布时间: 2011-12-11

控件的外观应该是自动的吧,同一个EXE,运行在不同系统下他的外观默认是和系统一致的。
要不然你打开工程属性,里面有一个“启用XP视觉样式”的复选框,你改一下这个项目试试。
Good luck!!!

作者: subMain   发布时间: 2011-12-11

是不是没办法通过CheckBox控件的程序集信息获取出里面所使用的三种状态的图片啊?

作者: cnwin   发布时间: 2011-12-13

引用 3 楼 cnwin 的回复:

是不是没办法通过CheckBox控件的程序集信息获取出里面所使用的三种状态的图片啊?

你说了是随系统改变样式的,那么图片什么的就不会在程序集中。
如果是WPF程序,可以用VisualBrush获取到,不过我猜你这是WinForm的

作者: bunliney   发布时间: 2011-12-13

没错是winform的。那么说比如CheckBox控件的那个小box,是checkbox控件本身的资源图片吗?还是绘制的结果?是win7和xp系统本身的checkbox就不是同一个吗?如何能做到我的自定义控件的Box与系统CheckBox的保持一致呢?肯定不是用图片了,图片就限定死了。

作者: cnwin   发布时间: 2011-12-14

引用 5 楼 cnwin 的回复:

没错是winform的。那么说比如CheckBox控件的那个小box,是checkbox控件本身的资源图片吗?还是绘制的结果?是win7和xp系统本身的checkbox就不是同一个吗?如何能做到我的自定义控件的Box与系统CheckBox的保持一致呢?肯定不是用图片了,图片就限定死了。

你自定义控件的box用checkbox的就可以和系统的一样了啊

作者: bunliney   发布时间: 2011-12-14

其实我是做了个三态treeview,用自己的想法实现的,各级间动态关联。没有使用Treeview的box,而是通过StateImageKey实现的。我知道如果使用系统控件会一致。可这里使用的图片,无法利用上控件阿。所以我才想能不能读出控件图片来。
要么我的方案就得改了。其实现在的也能用,只是从完美思想上觉得换了系统,不与系统的一致很别扭。

作者: cnwin   发布时间: 2011-12-15

引用 7 楼 cnwin 的回复:

其实我是做了个三态treeview,用自己的想法实现的,各级间动态关联。没有使用Treeview的box,而是通过StateImageKey实现的。我知道如果使用系统控件会一致。可这里使用的图片,无法利用上控件阿。所以我才想能不能读出控件图片来。
要么我的方案就得改了。其实现在的也能用,只是从完美思想上觉得换了系统,不与系统的一致很别扭。

你可以做成完全不与XP//VISTA/7一样的图片效果,这样在任何系统上都不会有别扭的感觉了。

作者: bunliney   发布时间: 2011-12-15

图片模拟

作者: Sandy945   发布时间: 2011-12-15