ImageList 类属性:TransparentColor 获取或设置被视为透明的颜色上面这幅图,我为了让圆周围的白色称为透明,
首先,用QQ的截图工具,查看周围白色的参数,为255,255,255
然后,设置 imageList1.TransparentColor = Color.FromArgb(255, 255, 255);但是,为什么运行后,白色还是存在呢,没有透明呢?
首先,用QQ的截图工具,查看周围白色的参数,为255,255,255
然后,设置 imageList1.TransparentColor = Color.FromArgb(255, 255, 255);但是,为什么运行后,白色还是存在呢,没有透明呢?
解决方案 »
- 对avicap32.dll调用 想写一个基于网络摄像头的程序 可以两个人视屏聊天的
- 怎么防止winform控件拖动到窗体之外
- 求助(谁有c# 编码规范 考试题)
- c#如何访问局域网内另外一台机器上的文件
- Gridview查询带小数的后面多了个0,怎么办
- 求算法
- 求学习思路,多说多给分,保证接帖
- WebForm中怎么用MessageBox?--我是真的没什么分了,才问了个问提话了我50,我穷啊
- C#连接Excel问题,是MS的Bug?
- vsual studio2003开发工具问题?
- SqlException (0x80131904): 无法打开登录所请求的数据库
- 32位机平台上的应用程序可以多大?
imageList.Images.Add(image);
imageList.Images[i]=image;对于已经存在于list中的图像,设置了TransparentColor也不会起什么作用,TransparentColor只会影响到后续添加的图像不过你的要求可以通过下面代码实现 int index = button2.ImageIndex;
imageList1.Images[index] = imageList1.Images[index];
button2.Refresh();
请问:
1:Refresh:重绘,这里的重绘是不是和Paint一样,重绘,顾名思义,就是画吧,是不是?可是button2中没有GDI+画的图形啊?
2:你写的:imageList1.Images[index] = imageList1.Images[index];是什么意思,等号两边的内容是一样的
这个特性,导致赋值语句可能没你想象的那么简单,因为赋值可能呢会触发属性的set方法imageList1.Images是一个 ImageList.ImageCollection对象这个对象很可能是这样实现索引器的 class ImageCollection
{
List<Image> images = new List<Image>();
public Image this[int i]
{
set
{
Image input = value;
// 他们可能在此处对input做了某些更改之后再放入内置的Image数组
// 透明的处理可能在此处完成
images[i] = input;
}
get
{
return images[i];
}
}
}说白了,C#中的赋值可能会调用一段代码至于那个Refresh,如果不加的话,代码执行完了不能立即看到效果
因为屏幕上看到的图像都是在缓冲器里的,更改了图像之后,必须触发重绘,才会生效,而调用refresh之前的几行代码都没有触发重绘。所以我们要主动调用refresh触发重绘