背景图片的函数或控件,是还是用位图背景

君,已阅读到文档的结尾了呢~~
给button等按钮和控件加背景色或者图片
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
给button等按钮和控件加背景色或者图片
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口1071人阅读
VC++(58)
1、使用OnEraseBkgnd函数实现对话框位图背景
BOOL CDisplayBmpBackGroundDlg::OnEraseBkgnd(CDC&& *pDC)&& //增加擦除背景函数
&GetClientRect(&rect);
&CBitmap m_pB
&m_pBmp.LoadBitmap(IDB_BITMAP1);
&m_pBmp.GetBitmap(&bm);//得到位图尺寸
&dcMem.CreateCompatibleDC(pDC);
&CBitmap* pOldBitmap = dcMem.SelectObject(&m_pBmp);
&&pDC-&SetStretchBltMode(COLORONCOLOR);//这个模式不设置的话会导致图片严重失真
&pDC-&StretchBlt(0,0,rect.Width() ,rect.Height(),
&&&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
&dcMem.SelectObject(pOldBitmap);
&return TRUE;
好多新手都不知道OnEraseBkgnd这个函数在对话框里是怎么添加的,有手工自己写和系统添加两种方式,具体使用方法见
到这里就可以实现位图了,但STATIC控件背景不透明,显得很难看。
2、来我们让STATIC控件透明吧
HBRUSH&OnCtlColor(CDC*
pDC, CWnd* pWnd, UINT nCtlColor)&
&if(nCtlColor == CTLCOLOR_DLG || nCtlColor == CTLCOLOR_BTN || nCtlColor ==& CTLCOLOR_STATIC)
&&&&&&&& pDC-&SetBkMode(TRANSPARENT);&&&&&
&return&& HBRUSH(GetStockObject(HOLLOW_BRUSH));
到这里其实就可以了,BMP的图片背景实现了,文本框的透明也实现了。
3、补充说明:,需要设置文本框的字体的话,会出现显示&字体重叠不刷新&的问题
4、这就要对该控件或者对话框处理了,要刷出新字体来。
&CWnd* pWnd = GetDlgItem(IDC_STATIC1);
&pWnd-&SetWindowText(&guohaiyang.&);//需要修改的控件标题
//这里可以刷整个对话框,但如果较频繁的话,很明显能看出来,就选择刷显示字体的那块区域就可以了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:354820次
积分:4669
积分:4669
排名:第4726名
原创:102篇
转载:106篇
评论:47条
(3)(1)(1)(1)(1)(4)(2)(2)(1)(1)(2)(1)(2)(8)(4)(7)(52)(12)(49)(53)(1)问题:最近在做Android项目,遇到一个问题,需要判断一个控件的背景图片是不是某张图片
描述:如题,上代码了
all.setBackgroundResource(R.drawable.bg_cloudy_day);Drawable drawable=getResources().getDrawable(R.drawable.bg_cloudy_day);
Drawable drawable1=all.getBackground();
但是判断if(drawable==drawable1){
结果是false,大神告诉我为什么啊,该怎么去判断呢解决方案1:http://blog.csdn.net/ly/article/details/http://blog.csdn.net/wangbole/article/details/
我找到的一些资料。//先获取本地资源引用名称,type name是R.drawable.background中的"drawable",entry name是"background"
String resTypeName = getContext().getResources().getResourceTypeName(id);
String resEntryName = getContext().getResources().getResourceEntryName(id);
//然后创建皮肤包所在应用的Context
Context apk = getContext().createPackageContext(packageName,
Context.CONTEXT_IGNORE_SECURITY)
//然后就是获取皮肤包中的资源id了
int drawavleId = apk.getResources().getIdentifier(resEntryName, resTypeName,
apk.getPackageName());
解决方案2:比较图片的话耗费太多资源,不建议直接比较Drawable,可以在设置时记录资源ID,也可以使用状态来判断解决方案3:如果是等号比较,是比较的内存地址,这是两个不同的对象,肯定返回false,Drawable有重写其equals方法吧,你看下它的这个方法源码,你试试equals比较相等看看,我用手机不方便看源码,也不知道是不是这样解决方案4:可以拿到2张图片的ID,然后对ID进行判断。解决方案5:直接比较Drawable肯定是行不通的,你虽然引用的是同一个资源,但是它们是2个不同的对象,这就已经是false了,还有就是同一楼说的,java里等号只比较内存地址,这就更false了,建议你换一个思路,不用比较Drawable,android里每个图片系统都会给他对应生成一个R值,你直接比较这个值吧。记得用equals比较。
以上介绍了“最近在做Android项目,遇到一个问题,需要判断一个控件的背景图片是不是某张图片”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/wd/596114.html
上一篇: 下一篇:}

我要回帖

更多关于 位图背景 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信