指定位置加载位图的问题。

秀小川 2012-03-21 11:19:19
为指定位置加载位图,开始我是先用一个picture控件,然后在程序里面动态加载图片,结果加载的图片把我原来放在那的按钮给遮住了。我想问下有没有什么方法解决这个问题,或者不用picture控件,怎么在一个指定位置加载位图。
...全文
128 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
SDKforCpp 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 k_lord 的回复:]

C/C++ code

CDC memDC;
CDC *pDC;
pDC = GetDC();
CBitmap bitmap; //产生一个位图变量
bitmap.LoadBitmap(IDB_BAK); //让它和导入的位图ID相关联
BITMAP map;
bitmap.GetBitmap(&map);……
[/Quote]你这个代码有错吴怎么能显示加上memdc.selectobject(&bitblt)试试
秀小川 2012-03-21
  • 打赏
  • 举报
回复
OnEraseBkgnd是整个背景的绘制,只绘制一部分的话,另外的地方会出问题!
秀小川 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hdg3707 的回复:]

你在OnEraseBkgnd(好象是这个函数)这个函数里用上面的方法加试试,
[/Quote]
我是在OnEraseBkgnd加过了,整个对话框变透明了!
hdg3707 2012-03-21
  • 打赏
  • 举报
回复
你在OnEraseBkgnd(好象是这个函数)这个函数里用上面的方法加试试,
秀小川 2012-03-21
  • 打赏
  • 举报
回复

CDC memDC;
CDC *pDC;
pDC = GetDC();
CBitmap bitmap; //产生一个位图变量
bitmap.LoadBitmap(IDB_BAK); //让它和导入的位图ID相关联
BITMAP map;
bitmap.GetBitmap(&map);
CSize size(map.bmWidth,map.bmHeight);
CRect rect;
rect = new CRect(0,0,size.cx,size.cy);
memDC.CreateCompatibleDC(pDC);
pDC-> StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,size.cx,size.cy,SRCCOPY);
ReleaseDC(pDC);


我试着用这种方法加载位图,这次没有显示了!
lang14 2012-03-21
  • 打赏
  • 举报
回复
在你想放图片的位置定义一个CRect,然后在里面放图片就可以了
shn521 2012-03-21
  • 打赏
  • 举报
回复
用StretchBlt这个函数
秀小川 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hdg3707 的回复:]

你是怎么操作的,你是不是把picture控件和按钮放在一个位置了,如果是这样,就算你不加载图片,你也只能显示一个控件,或者是picture或是按钮.你是不是想给按钮加上背景图片.如果是这样,你直接对按钮进行加载图片操作.
关于按钮加上背景图片,网上有如何操作的
[/Quote]
不是的,我是在几个按钮放在对话框最上面,然后在上面一块贴上一个背景图片,类似360安全卫士的界面!
hdg3707 2012-03-21
  • 打赏
  • 举报
回复
你是怎么操作的,你是不是把picture控件和按钮放在一个位置了,如果是这样,就算你不加载图片,你也只能显示一个控件,或者是picture或是按钮.你是不是想给按钮加上背景图片.如果是这样,你直接对按钮进行加载图片操作.
关于按钮加上背景图片,网上有如何操作的
秀小川 2012-03-21
  • 打赏
  • 举报
回复
画到picture控件上也可以,就是会盖住我原来的按钮之类的控件!
不画控件上,就画对话框上,可以不可以?
shn521 2012-03-21
  • 打赏
  • 举报
回复
你要把图画在控件上?
那你最好是自己写个继承类,然后在继承类的OnPaint里绘图,然后控件关联这个类
秀小川 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 shn521 的回复:]

引用 13 楼 k_lord 的回复:
C/C++ code

你得加到OnPaint里,因为重绘的时候会把图片擦除的
[/Quote]
不管是放在OnPaint里面,还是初始化里面,都不会显示我加载的位图!
shn521 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 k_lord 的回复:]
C/C++ code

CDC memDC;
CDC *pDC;
pDC = GetDC();
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BAK);
BITMAP map;
bitmap.GetBitmap(&map);
CSize size(map.b……
[/Quote]
你得加到OnPaint里,因为重绘的时候会把图片擦除的
秀小川 2012-03-21
  • 打赏
  • 举报
回复

CDC memDC;
CDC *pDC;
pDC = GetDC();
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BAK);
BITMAP map;
bitmap.GetBitmap(&map);
CSize size(map.bmWidth,map.bmHeight);
CRect rect;
rect = new CRect(0,0,size.cx,size.cy);
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bitmap);
pDC-> StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,size.cx,size.cy,SRCCOPY);
ReleaseDC(pDC);

我这有改过了,没加到OnEraseBkgnd里面,重载OnEraseBkgnd 的话,只重绘一部分,没有重绘的部分会变成透明的! 所以我想加到OnInitDialog里面!
shn521 2012-03-21
  • 打赏
  • 举报
回复
SelectObject(
CBitmap* pBitmap );

memDC.SelectObject(&bitmap)
shn521 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 k_lord 的回复:]
C/C++ code

CDC memDC;
CDC *pDC;
pDC = GetDC();
CBitmap bitmap; //产生一个位图变量
bitmap.LoadBitmap(IDB_BAK); //让它和导入的位图ID相关联
BITMAP map;
bitmap.GetBitmap(&……
[/Quote]
你的位图根本就没和dc关联起来,当然没显示啊
秀小川 2012-03-21
  • 打赏
  • 举报
回复
加上了还是不行,我是放在初始化里面 ,没有放在OnEraseBkgnd 里面!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧