VC++ 怎么插入JPG图片 非BMP位图
1个回答
2013-04-19
展开全部
VC中图片插入和位图操作
一.在程序中插入JPG图片Graphics graphics(hDC);
WCHAR strBKG[256];
Image* m_imgBK;CString strBK=theApp.m_strStartPath + "\\topoBK.JPG";//1
BSTR bstrBK = strBK.AllocSysString();//2
wcscpy(strBKG, bstrBK);//3
this->m_imgBK = new Image(strBKG);//4
CRect rect ;
this->GetClientRect(&rect);
RectF rc(rect.TopLeft().x , rect.TopLeft().y , rect.Width() , rect.Height());
graphics.DrawImage(this->m_imgBK,rc);二.操作BMP图片2.1 加载自定义的位图CBitmap m_Bitmap;
m_Bitmap.LoadBitmap(IDB_BITMAP3); CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(&m_Bitmap); CClientDC CliendDC(this);
BITMAP BM;
m_Bitmap.GetObject(sizeof(BM),&BM); CliendDC.BitBlt(100,100,BM.bmWidth,BM.bmHeight,&MemDC,0,0,SRCCOPY);// CliendDC.StretchBlt(400,400,30,30,&MemDC,0,0,BM.bmWidth,BM.bmHeight,SRCCOPY);//缩小比例2.2 加载插入的位图:插入BMP文件方式: 把要插入的图片放在资源文件夹里,然后导入,当图片质量高时,不能预览,但是在资源视图里面已经存在,然后可以像自定义位图那样使用。===============================Windows中位图有两种格式,一种是“设备相关”位图(Device Depend Bitmap,DDB),另一种是“设备无关”位图(Device Independ Bitmap,DIB)。 一、DDB位图的显示 DDB位图的显示很简单,将文件内容拷贝到内存中,然后可以很方便地将它粘贴到相关设备中,用BitBlt函数直接显示。首先改写视图类中的OnFileOpen()函数,从文件装载位图到内存中。m_pBmp是CBitmap指针变量,得到该指针后,就可以在OnDraw()函数中显示位图了。 voidCBmpDemoView::OnFileOpen()在VC中使用CBitmap类必须将BMP位图装入资源中,然后通过类 CBitmap的成员函数使用它,在通过CDC类的成员函数操作它。如果你希望在每个结点前添加一个小图标,就必需先调用CTreeCtrl类的成员函数CImageList* SetImageList( CImageList * pImageList, intnImageListType ),指明当前控件所使用的图像列表(ImageList),nImageListType为TVSIL_NORMAL。在调用完成后控件中使用图片以设置的ImageList中图片为准。然后调用HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent =TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST)添加结点,其中参数nImage为结点没被选中时所使用图片序号,nSelectedImage为结点被选中时所使用图片序号。m_wndTree.SetBkImage(IDB_TREE_BACKGROUND);
凡窝技术论坛提供
一.在程序中插入JPG图片Graphics graphics(hDC);
WCHAR strBKG[256];
Image* m_imgBK;CString strBK=theApp.m_strStartPath + "\\topoBK.JPG";//1
BSTR bstrBK = strBK.AllocSysString();//2
wcscpy(strBKG, bstrBK);//3
this->m_imgBK = new Image(strBKG);//4
CRect rect ;
this->GetClientRect(&rect);
RectF rc(rect.TopLeft().x , rect.TopLeft().y , rect.Width() , rect.Height());
graphics.DrawImage(this->m_imgBK,rc);二.操作BMP图片2.1 加载自定义的位图CBitmap m_Bitmap;
m_Bitmap.LoadBitmap(IDB_BITMAP3); CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(&m_Bitmap); CClientDC CliendDC(this);
BITMAP BM;
m_Bitmap.GetObject(sizeof(BM),&BM); CliendDC.BitBlt(100,100,BM.bmWidth,BM.bmHeight,&MemDC,0,0,SRCCOPY);// CliendDC.StretchBlt(400,400,30,30,&MemDC,0,0,BM.bmWidth,BM.bmHeight,SRCCOPY);//缩小比例2.2 加载插入的位图:插入BMP文件方式: 把要插入的图片放在资源文件夹里,然后导入,当图片质量高时,不能预览,但是在资源视图里面已经存在,然后可以像自定义位图那样使用。===============================Windows中位图有两种格式,一种是“设备相关”位图(Device Depend Bitmap,DDB),另一种是“设备无关”位图(Device Independ Bitmap,DIB)。 一、DDB位图的显示 DDB位图的显示很简单,将文件内容拷贝到内存中,然后可以很方便地将它粘贴到相关设备中,用BitBlt函数直接显示。首先改写视图类中的OnFileOpen()函数,从文件装载位图到内存中。m_pBmp是CBitmap指针变量,得到该指针后,就可以在OnDraw()函数中显示位图了。 voidCBmpDemoView::OnFileOpen()在VC中使用CBitmap类必须将BMP位图装入资源中,然后通过类 CBitmap的成员函数使用它,在通过CDC类的成员函数操作它。如果你希望在每个结点前添加一个小图标,就必需先调用CTreeCtrl类的成员函数CImageList* SetImageList( CImageList * pImageList, intnImageListType ),指明当前控件所使用的图像列表(ImageList),nImageListType为TVSIL_NORMAL。在调用完成后控件中使用图片以设置的ImageList中图片为准。然后调用HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent =TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST)添加结点,其中参数nImage为结点没被选中时所使用图片序号,nSelectedImage为结点被选中时所使用图片序号。m_wndTree.SetBkImage(IDB_TREE_BACKGROUND);
凡窝技术论坛提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询