📄 subject_33392.htm
字号:
<p>
序号:33392 发表者:黄豆豆 发表日期:2003-03-19 20:33:16
<br>主题:关于一个对话框的问题,急
<br>内容:如何在对话框界面上显示24位色的bmp文件或者gif、jpg文件,我用picture控件加载的bmp文件只能显示256色,好难看哟:(<BR>望各位大虾不吝赐教!!!<BR>谢谢!!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:tjhe 回复日期:2003-03-19 21:19:04
<br>内容:对于位图文件,可用LoadImage:<BR>HBITMAP hBitmap;//可作为对话类成员<BR><BR>//在一合适地方初始化,如在OnInitDialog等<BR> hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),<BR> lpszImageFile,<BR> IMAGE_BITMAP,<BR> 0,0,<BR> LR_LOADFROMFILE|LR_CREATEDIBSECTION);<BR> ASSERT(hBitmap);<BR><BR><BR>响应WM_ERASEBKGND消息,在<BR>OnEraseBkgnd(CDC* pDC) 中加入: <BR><BR> CRect Rect; <BR> GetClientRect (&Rect); //获取客户区大小 <BR> int x=0, y=0; <BR><BR> CBitmap* pbmp = CBitmap::FromHandle(hBitmap);<BR> BITMAP bm;<BR> pbmp->GetObject(sizeof(BITMAP), (LPVOID)&bm));<BR> CDC dcMem;<BR> dcMem.CreateCompatibleDC(NULL);<BR> CBitmap* pOldBitmap = dcMem.SelectObject(pbmp);<BR><BR> //放在对话框中间<BR> x= (Rect.Width()-bm.bmWidth)/2; //位图左上角横坐标 <BR> y= (Rect.Height()-bm.bmHeight)/2; //位图左上角纵坐标 <BR> pDC->BitBlt(x, //目标位图横坐标 <BR> x, //目标位图纵坐标 <BR> bm.bmWidth, //要转换的块高度 <BR> bm.bmHeight, //要转换的块宽度 <BR> &dcMem, //图形数据的源设备对象 <BR> 0, //源位图横坐标 <BR> 0, //源位图纵坐标 <BR> SRCCOPY); //转换类型代码,SRCCOPY表示数据不经修改直接拷贝 <BR>//或铺满对话框<BR>//pDC->StretchBlt(0,0,Rect.Width(),Rect.Height(),&MemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);<BR> cMem.SelectObject(pOldBitmap); <BR><BR>//return CDialog::OnEraseBkgnd(pDC); //去掉缺省调用
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:黄豆豆 回复日期:2003-03-21 22:08:05
<br>内容:谢谢!!<BR>还往以后不惜赐教!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -