如何改变bitmap的背景色???

时间:2022-11-18 14:47:49
使用了CBitmapbutton类,把位图load到一个按钮上,现在要改变这个位图的背景色或者透明?

14 个解决方案

#1


高手帮忙呀~~~~~~没人知道嘛?

#2


没办法改变的,用一个改变了背景的其他bitmap来代替这个就可以了........

#3


引用 2 楼 dirdirdir3 的回复:
没办法改变的,用一个改变了背景的其他bitmap来代替这个就可以了........

我要根据ini的一个设置项的数值来随时改变?做不到嘛?有啥好办法没?

#4


你自己先定义一下什么叫“位图的背景色”

#5


引用 4 楼 Mackz 的回复:
你自己先定义一下什么叫“位图的背景色”

假如有个矩型的图片,里面有个圆形,矩型的颜色是红色,圆形是黄色,我现在要随时改变这个矩形的颜色~~~如何改变?

#6


最好是换了另外的位图 ,或者对位图做gdi的 处理。

#7


你获取CButton的区域,再用刷子填充一下看看

#8


我好像做过相关的东西,重点再填充按钮的背景,不行就修改Cbitmap的背景,再资源中进行

#9


引用 8 楼 Irene12 的回复:
我好像做过相关的东西,重点再填充按钮的背景,不行就修改Cbitmap的背景,再资源中进行

请教咋改资源?是动态的,程序启动以后是不是可以修改资源中的位图~~~???

#10


..............

Cbitmap是一张位图对象

如果你是要修改按钮的底色只需要GetClientRect获取当前矩形区域,然后在OnPaint里用画刷FillRect一下刚才的矩形就好了.颜色自选.
而位图你是要贴在什么位置是位图的事情,位图就是图没有背景.

#11


引用 10 楼 VsirSoft 的回复:
.............. 

Cbitmap是一张位图对象 

如果你是要修改按钮的底色只需要GetClientRect获取当前矩形区域,然后在OnPaint里用画刷FillRect一下刚才的矩形就好了.颜色自选. 
而位图你是要贴在什么位置是位图的事情,位图就是图没有背景.

我要根据ini的一个设置项的数值来随时改变图片的颜色?例如如果它是0x0000ff,就显示蓝色;如果它是0xff00,就显示红色等,如何做到?

#12


一张bitmap就是一张图,无法动态改变的。
要想动态改变,要么就是多张图片,根据选项来贴。要么就是自己控制一个区域,随时可以填充的。贴的位图专门做一下,和希望控制区域重复的地方,全部画成透明。
这样,相当于PS 中的图层了,上层是你做的bitmap,有一部分区域是透明的;底层是你希望的“背景”区域,可以被改变的。透过bitmap的透明区域,就能看到“背景”区域的颜色。

#13


引用 12 楼 shuiyan 的回复:
一张bitmap就是一张图,无法动态改变的。 
要想动态改变,要么就是多张图片,根据选项来贴。要么就是自己控制一个区域,随时可以填充的。贴的位图专门做一下,和希望控制区域重复的地方,全部画成透明。 
这样,相当于PS 中的图层了,上层是你做的bitmap,有一部分区域是透明的;底层是你希望的“背景”区域,可以被改变的。透过bitmap的透明区域,就能看到“背景”区域的颜色。

我明白你的意思了,如何把一个图不用的地方作成透明区域(就是你说的bitmap的透明区域),请给个具体实现的方法吧?

#14


如果是自己绘制,很简单,又多种方法实现透明贴图;用控件的话,找一下一个从位图创建区域(region)的函数,然后用SetWindowRgn设置控件形状好了。

#1


高手帮忙呀~~~~~~没人知道嘛?

#2


没办法改变的,用一个改变了背景的其他bitmap来代替这个就可以了........

#3


引用 2 楼 dirdirdir3 的回复:
没办法改变的,用一个改变了背景的其他bitmap来代替这个就可以了........

我要根据ini的一个设置项的数值来随时改变?做不到嘛?有啥好办法没?

#4


你自己先定义一下什么叫“位图的背景色”

#5


引用 4 楼 Mackz 的回复:
你自己先定义一下什么叫“位图的背景色”

假如有个矩型的图片,里面有个圆形,矩型的颜色是红色,圆形是黄色,我现在要随时改变这个矩形的颜色~~~如何改变?

#6


最好是换了另外的位图 ,或者对位图做gdi的 处理。

#7


你获取CButton的区域,再用刷子填充一下看看

#8


我好像做过相关的东西,重点再填充按钮的背景,不行就修改Cbitmap的背景,再资源中进行

#9


引用 8 楼 Irene12 的回复:
我好像做过相关的东西,重点再填充按钮的背景,不行就修改Cbitmap的背景,再资源中进行

请教咋改资源?是动态的,程序启动以后是不是可以修改资源中的位图~~~???

#10


..............

Cbitmap是一张位图对象

如果你是要修改按钮的底色只需要GetClientRect获取当前矩形区域,然后在OnPaint里用画刷FillRect一下刚才的矩形就好了.颜色自选.
而位图你是要贴在什么位置是位图的事情,位图就是图没有背景.

#11


引用 10 楼 VsirSoft 的回复:
.............. 

Cbitmap是一张位图对象 

如果你是要修改按钮的底色只需要GetClientRect获取当前矩形区域,然后在OnPaint里用画刷FillRect一下刚才的矩形就好了.颜色自选. 
而位图你是要贴在什么位置是位图的事情,位图就是图没有背景.

我要根据ini的一个设置项的数值来随时改变图片的颜色?例如如果它是0x0000ff,就显示蓝色;如果它是0xff00,就显示红色等,如何做到?

#12


一张bitmap就是一张图,无法动态改变的。
要想动态改变,要么就是多张图片,根据选项来贴。要么就是自己控制一个区域,随时可以填充的。贴的位图专门做一下,和希望控制区域重复的地方,全部画成透明。
这样,相当于PS 中的图层了,上层是你做的bitmap,有一部分区域是透明的;底层是你希望的“背景”区域,可以被改变的。透过bitmap的透明区域,就能看到“背景”区域的颜色。

#13


引用 12 楼 shuiyan 的回复:
一张bitmap就是一张图,无法动态改变的。 
要想动态改变,要么就是多张图片,根据选项来贴。要么就是自己控制一个区域,随时可以填充的。贴的位图专门做一下,和希望控制区域重复的地方,全部画成透明。 
这样,相当于PS 中的图层了,上层是你做的bitmap,有一部分区域是透明的;底层是你希望的“背景”区域,可以被改变的。透过bitmap的透明区域,就能看到“背景”区域的颜色。

我明白你的意思了,如何把一个图不用的地方作成透明区域(就是你说的bitmap的透明区域),请给个具体实现的方法吧?

#14


如果是自己绘制,很简单,又多种方法实现透明贴图;用控件的话,找一下一个从位图创建区域(region)的函数,然后用SetWindowRgn设置控件形状好了。