picture control的使用

奋斗小青年 2011-12-30 08:34:13
各位,我现在有个问题,我对话框上有个Picture Control控件,当此控件加载bmp图片时,当bmp尺寸比较大时,图片在Picture Control上显示不全。我怎样才能使我的Picture Control随bmp图片大小而改变了?求代码与思路。
...全文
3385 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaoxiaomi1025 2013-12-16
  • 打赏
  • 举报
回复
看不下去了,太多了。。。。。。。。。。。。。
  • 打赏
  • 举报
回复
楼主怎么解决的,我也遇到了这个问题了。。。。
guoliushui 2012-10-29
  • 打赏
  • 举报
回复
楼主怎么解决的,我也遇到了这个问题了。。。。
奋斗小青年 2012-01-05
  • 打赏
  • 举报
回复
问题已经解决,谢谢各位了。咋不能加分了? - -
schlafenhamster 2012-01-03
  • 打赏
  • 举报
回复
如果是 BITMAP bmp;
则可以不要:GetObject(hBmp,sizeof(BITMAP),&bmp);
schlafenhamster 2012-01-03
  • 打赏
  • 举报
回复
“通过选择文件对话框那种去选择图片加载的”变成:HBITMAP hBmp
ChangeDlgSize(hBmp);
奋斗小青年 2012-01-03
  • 打赏
  • 举报
回复
选择的图片是不定的,也就是不是在bitmap里面的。通过选择文件对话框那种去选择图片加载的。
schlafenhamster 2012-01-02
  • 打赏
  • 举报
回复
//根据bitmap改变dlg大小
#define MINI_WIDTH 300
#define MINI_HEIGHT 200
void COpenPNGDlg::ChangeDlgSize(HBITMAP hBmp)
{
CRect dlgRc;
GetWindowRect(&dlgRc);
BOOL bChanged=FALSE;
BITMAP bmp;
GetObject(hBmp,sizeof(BITMAP),&bmp);
int wid;
int hei;
//
wid=bmp.bmWidth+100;
hei=bmp.bmHeight+4+24;// 24=title
if(wid < MINI_WIDTH) wid=MINI_WIDTH;
if(hei < MINI_HEIGHT) hei=MINI_HEIGHT;
// may be out screen !
if(dlgRc.left <0 ) dlgRc.left = 0;
if(dlgRc.top <0 ) dlgRc.top = 0;
//
m_rcPic.left=2;
m_rcPic.right=bmp.bmWidth+2;
m_rcPic.top=2;
m_rcPic.bottom=bmp.bmHeight+2;
//
MoveWindow(dlgRc.left,dlgRc.top,wid,hei);
CRect btRc;
GetDlgItem(IDC_BT_OPEN)->GetClientRect(&btRc);
GetDlgItem(IDC_BT_OPEN)->MoveWindow(wid-90,hei-110,btRc.Width(),btRc.Height());
GetDlgItem(IDOK)->GetClientRect(&btRc);
GetDlgItem(IDOK)->MoveWindow(wid-90,hei-80,btRc.Width(),btRc.Height());
GetDlgItem(IDCANCEL)->GetClientRect(&btRc);
GetDlgItem(IDCANCEL)->MoveWindow(wid-90,hei-50,btRc.Width(),btRc.Height());
}
奋斗小青年 2011-12-31
  • 打赏
  • 举报
回复
在公司开不了邮箱啊。- -
奋斗小青年 2011-12-31
  • 打赏
  • 举报
回复
我就是要实现picture control 全部显示图片,不能压缩图片大小,必须实际显示图片大小
奋斗小青年 2011-12-31
  • 打赏
  • 举报
回复
dahaiI0

(渎神者)
你的这个思路 可以实现我的需求。我界面是真不熟,麻烦你帮我弄下。上面是我Q 最好给我来些代码。谢谢了
奋斗小青年 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 dahaii0 的回复:]
你到底想实现什么效果,如果BMP比对话框还大,要么调整对话框的大小,要么用StretchBlt贴上去,如果BMP比对话框小,那就把picture control调整到跟图片一样大,然后加载。今天快没了如果还没解决就留个邮箱或QQ。
[/Quote]
现在我是要做picture control 随bmp图片大小改变, 我的Q 373988834
dahaiI0 2011-12-31
  • 打赏
  • 举报
回复
你到底想实现什么效果,如果BMP比对话框还大,要么调整对话框的大小,要么用StretchBlt贴上去,如果BMP比对话框小,那就把picture control调整到跟图片一样大,然后加载。今天快没了如果还没解决就留个邮箱或QQ。
奋斗小青年 2011-12-31
  • 打赏
  • 举报
回复
各位问题还么解决了,帮指点啊。实在搞不定
GIS_wudi 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wanyuan19890515 的回复:]
引用 11 楼 gis_wudi 的回复:
接代码
CStatic* pContrl = (CStatic*)GetDlgItem(IDC_PICTURE_CONTRL);
if(pContrl != NULL)
{
CRect rt;
pContrl->GetWindowRect(&amp;rt);
ScreenToClient(&amp;rt);
pContrl……
[/Quote]
用这句就可以控制位置和大小
rt决定着是不是你想要的结果
pContrl->MoveWindow(&rt);
图片在资源管理器中已经关联好了以后,就不需要再次关联,它会出现在你想要的位置上
奋斗小青年 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gis_wudi 的回复:]
接代码
CStatic* pContrl = (CStatic*)GetDlgItem(IDC_PICTURE_CONTRL);
if(pContrl != NULL)
{
CRect rt;
pContrl->GetWindowRect(&rt);
ScreenToClient(&rt);
pContrl->MoveWindow(&rt);
}
[/Quote]
朋友我首先说下我的疑问
pContrl->GetWindowRect(&rt);
这里应该是图片的实际大小的矩形吧?
还有这句不大懂意思
控件属性中,Image项关联导入的bmp的ID
shen_wei 2011-12-30
  • 打赏
  • 举报
回复
获取图片的大小,移动控件。。思路就是这个。。!!

GIS_wudi 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wanyuan19890515 的回复:]
C/C++ code
CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC_SHOW);
pStatic->MoveWindow(0,0,m_lpBMPHdr->biWidth, m_lpBMPHdr->biHeight);

现在我改变了控件的大小,现在我要怎样加载那图片了?
接着调用 StretchDIBits?
[/Quote]
控件属性中,Image项关联导入的bmp的ID
GIS_wudi 2011-12-30
  • 打赏
  • 举报
回复
接代码
CStatic* pContrl = (CStatic*)GetDlgItem(IDC_PICTURE_CONTRL);
if(pContrl != NULL)
{
CRect rt;
pContrl->GetWindowRect(&rt);
ScreenToClient(&rt);
pContrl->MoveWindow(&rt);
}
奋斗小青年 2011-12-30
  • 打赏
  • 举报
回复
CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC_SHOW);
pStatic->MoveWindow(0,0,m_lpBMPHdr->biWidth, m_lpBMPHdr->biHeight);

现在我改变了控件的大小,现在我要怎样加载那图片了?
接着调用 StretchDIBits?
加载更多回复(16)

15,979

社区成员

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

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