Static控件显示图片

sjbird331 2009-12-02 09:18:51
我用static控件显示了图片,为什么程序切换一下之后,控件就没有图片了?譬如,我打开图片之后,切换到最小化,然后再回到原来的状态,图片就不在static控件上显示了。请问这是怎么回事?谢谢
...全文
355 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2009-12-02
  • 打赏
  • 举报
回复
恩,就是重绘的问题
liugang_12026168 2009-12-02
  • 打赏
  • 举报
回复
图片被static控件覆盖,需要重绘
gavinma 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sjbird331 的回复:]
如果重绘了,应该如何解决呢?
[/Quote]
你把加载的位图实现放在重绘的代码就好了,处理WM_PAINT,

void Cxxx::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this);
/************加载位图位置**************/
CRect rect;
this->GetDlgItem(IDC_XXX)->GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_XXX);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);

dc.StretchBlt(rect.left,rect.top,bitmap.bmWidth,bitmap.bmHeight,&dcMem,rect.left,rect.top,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
/************加载位图位置**************/
CDialog::OnPaint();
}
}
sjbird331 2009-12-02
  • 打赏
  • 举报
回复
如果重绘了,应该如何解决呢?
wwgddx 2009-12-02
  • 打赏
  • 举报
回复
你用static控件显示图片的方法是怎么样的?
最好把他放在ONPAINT里面实现.
gavinma 2009-12-02
  • 打赏
  • 举报
回复
应该是重绘了。。。。 重绘的时候你没有重新加载图片

15,980

社区成员

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

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