请问界面贴图问题,在线等 我看了很多漂亮的界面,好像他们的图片都是一块一块贴上去的,怎么我的界面是把整个图画好,然后一次性贴到对话框上就行了,到底这样有什么利弊呢?一般大家都是怎么实现的呢?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在她的程序运行的时候进行屏幕拷贝,然后你修改界面BMP图片,在你的程序中加载就可以了。一般很多的程序都是采用背景贴BMP图片的形式实现的。 void CTestDlg::OnPaint() { HDC dc = ::GetDC(m_hWnd); HDC dcMem; dcMem = ::CreateCompatibleDC(dc); HBITMAP hBitmap = (HBITMAP) ::LoadImage( NULL , "E:\\1.bmp" , IMAGE_BITMAP , 0 , 0 ,LR_LOADFROMFILE ); HBITMAP hOldBm = (HBITMAP)::SelectObject(dcMem , hBitmap); CRect rt; BITMAP bm; ::GetObject( hBitmap , sizeof(BITMAP) , &bm); GetClientRect(&rt); ::SetStretchBltMode(dc , COLORONCOLOR); StretchBlt( dc , 0 , 0 , rt.Width() , rt.Height() , dcMem , 0 , 0 , bm.bmWidth , bm.bmHeight , SRCCOPY); SelectObject(dcMem , hOldBm); ::DeleteDC(dcMem); DeleteObject(hBitmap); ::ReleaseDC( m_hWnd , dc);} 这个要看你的美术功底了。。可以做一个bmp当背景,也可以分别贴图 我做的界面都是用PhotoShop做好,然后作为背景图帖上去.另外,上上楼贴图的方法问题很多,建议不这样. 贴图倒是不难,我用codeproject上面的一个dialog类来实现的,调一个函数就可以了,哈哈 我觉的一次性贴图更加好一些 . . . 从效率来说并不会比多个贴图慢 . . . 另外从操作性来说 , 更强一些 . . . 多个贴图需要考虑每个图片之间的位置关系 , 操控性更弱一些 . . 出错率也更大一些 . . .你可以直接一个大的背景底图 , 这个背景地图可以在OnEraseBkgnd里绘制 . . .然后一些小图可以在OnPaint里绘制 .. 怎么看一个网络是以太网还是什么令牌网 关于 HJJ的 <深入浅出mfc> Windows 字符串反转的问题 用vc 6怎么在sql server2000 导出,导入xml? 窗口大小问题 win32 console application ONMOUSEWHEEL事件 PE文件? 如何指定对话框和按钮的背景色? c和c++在非面向对象过程的区别!怎么翻译??谢谢! 关于在doc/view中使用MS DataGrid和MS Ado Control问题 问一个关于CreateThread的弱弱问题?
一般很多的程序都是采用背景贴BMP图片的形式实现的。
{
HDC dc = ::GetDC(m_hWnd);
HDC dcMem;
dcMem = ::CreateCompatibleDC(dc);
HBITMAP hBitmap = (HBITMAP) ::LoadImage( NULL , "E:\\1.bmp" , IMAGE_BITMAP ,
0 , 0 ,LR_LOADFROMFILE );
HBITMAP hOldBm = (HBITMAP)::SelectObject(dcMem , hBitmap);
CRect rt;
BITMAP bm;
::GetObject( hBitmap , sizeof(BITMAP) , &bm);
GetClientRect(&rt);
::SetStretchBltMode(dc , COLORONCOLOR);
StretchBlt( dc , 0 , 0 , rt.Width() , rt.Height() , dcMem , 0 , 0 , bm.bmWidth , bm.bmHeight , SRCCOPY);
SelectObject(dcMem , hOldBm);
::DeleteDC(dcMem);
DeleteObject(hBitmap);
::ReleaseDC( m_hWnd , dc);
}
然后作为背景图帖上去.另外,上上楼贴图的方法问题很多,建议不这样.