1. c++ 怎么给对话框添加背景图片
用CImage类.
在onpaint()中
if(IsIconic())
{
.......//系统代码,不修改
}
else//在else中增加如下代码,对JPG,BMP,PNG(背景透明图片)有效
{
CRectrc;
GetClientRect(rc);
CImageimage;
image.Load(_T("c:\1.jpg"));//图片文件路径
if(image.GetBPP()==32)
{
inti;intj;
for(i=0;i<image.GetWidth();i++)
{
for(j=0;j<image.GetHeight();j++)
{
byte*pByte=(byte*)image.GetPixelAddress(i,j);
pByte[0]=pByte[0]*pByte[3]/255;
pByte[1]=pByte[1]*pByte[3]/255;
pByte[2]=pByte[2]*pByte[3]/255;
}
}
}
image.Draw(GetDC()->m_hDC,rc);
}
2. 怎么给MFC的对话框加背景图片
1、新建MFC应用程序。
3. VC++的MFC中,如何给基本对话框加上JPG格式的背景图片
在这个对话框类里添加相应wm_paint的消息处理用BitBlt(。。。)或者stretchblt(。。。)贴图
具体查看msdn
4. vc怎么在工具栏加背景图片
先从CToolBar派生一个类CSXBar(名字随便取啊)
头文件里(CSXBar.h)
classCSXBar:publicCToolBar
{
public:
...
protected:
//{{AFX_MSG(CSXBar)
afx_msgBOOLOnEraseBkgnd(CDC*pDC);//声明消息相应函数
//}}AFX_MSG
}
源文件里(CSXBar.cpp)
添加消息
BEGIN_MESSAGE_MAP(CSXBar,CToolBar)
//{{AFX_MSG_MAP(CSXBar)
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
添加消息相应函数
BOOLCSXBar::OnEraseBkgnd(CDC*pDC)
{
//TODO:/orcalldefault
CBitmapm_bk;
m_bk.LoadBitmap(IDB_BK);
CDCm_dcbk;
m_dcbk.CreateCompatibleDC(pDC);
BITMAPm_bkInfo;
m_bk.GetBitmap(&m_bkInfo);
m_dcbk.SelectObject(&m_bk);
CRectrect;
GetClientRect(&rect);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&m_dcbk,0,0,m_bkInfo.bmWidth,m_bkInfo.bmHeight,SRCCOPY);
return1;
}
一个新的类就做好了
然后在MainFrame头文件里包涵自己的类头文件
#include"SXBar.h"
最后一步,将原来的
CToolBarm_wndToolBar;
改成
CSXBarm_wndToolBar;
就完工了
记住了,分四步:
派生新的类
添加消息响应
编写消息相应函数
调用新的类
5. vc++如何给窗体添加背景图片
三步。
第一步:
选好.bmp的类型的图片。在资源视图中导入。随便复制到.res文件夹下。
第二步。在对话框上添加picture控件,调整到大小。右击属性选择Type选择Bitmap.
Image下拉组合框选择你导入的图片。运行时即可显示图片。
如果要设置和窗体一样的大小SetWindowPos就可以了。查查这个函数的作用
6. Vc怎么把mfc,win32对话框背景,换成图片,JPG格式,png格式的
JPEG是一种图像压缩标准,很多精美的图片都是采用这种格式标准,其特点是文件体积较小,而且支持24位色深。但是,Windows9x只支持位图文件(即以bmp为扩展名的文件)的墙纸。下面这个程序就是将以jpg或jpeg为扩展名的图片文件转化为位图文件,并通过修改注册表的键值来通知Windows更换墙纸。本程序使用了一个Tform;一个OpenPictureDialog用来让用户选择图片;三个SpeedButton;分别用来打开OpenPictureDialog对话框,确定更换墙纸,退出程序。程序全部代码如下:unitUnit1;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,jpeg,registry,ExtDlgs,StdCtrls,Buttons;typeTForm1=class(TForm)SpeedButton1:TSpeedButton;SpeedButton2:TSpeedButton;SpeedButton3:TSpeedButton;OpenPictureDialog1:TOpenPictureDialog;procereSpeedButton1Click(Sender:TObject);procereSpeedButton2Click(Sender:TObject);procereSpeedButton3Click(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;varForm1:TForm1;implementation{$R*.DFM}procereTForm1.SpeedButton1Click(Sender:TObject);beginopenpicturedialog1.execute;{打开OpenPictureDialog对话框}end;procereTForm1.SpeedButton2Click(Sender:TObject);varreg:tregistry;{Tregistry对象在Registry单元中声明,需要在Uese中引用Registry单元}jpeg:tjpegimage;{Tjpegimage对象在Jpeg单元中声明,需要在Uese中引用Jpeg单元}bmp:tbitmap;beginif(openpicturedialog1.filename=``)then{判断OpenPictureDialog1中有无文件被选中}messagedlg(`请选择一张图片`,mtinformation,[mbOK],0)elsebeginjpeg:=tjpegimage.Create;jpeg.LoadFromFile(openpicturedialog1.filename);{加载被用户选中的文件}bmp:=tbitmap.Create;bmp.assign(jpeg);bmp.savetofile(`c:\windows\wall.bmp`);{将转换成功的文件保存的路径及文件名}reg:=tregistry.Create;reg.rootkey:=hkey_current_user;{设置根键名称}reg.openkey(`controlpanel\desktop`,false);{打开ControlPanel\Desktop路径对应的主键}reg.writestring(`tilewallpaper`,`0`);reg.writestring(`wallpaper`,`c:\windows\wall.bmp`);{覆盖并写入新值TileWall-paper和Wallpaper串}systemparametersinfo(spi_setdeskwallpaper,0,nil,spif_sendchange);{通知win-dows更换墙纸}reg.closekey;{写入更改内容并关闭注册表}reg.Free;{释放对象}close;end;end;procereTForm1.SpeedButton3Click(Sender:TObject);beginclose;end;end.此程序只能将以jpg或jpeg为扩展名的图片文件转化为Windows的墙纸,因此应在OpenPictureDialog控件的Filter属性中筛选显示文件的类型,最好设置为JPEGImageFile(*.jpg)和JPEGImageFile(*.jpeg)文件。程序在中文Windows98,Delphi4.0下编译通过
7. VC怎么给简单对话框应用程序添加背景图片
//在public中定义如下: CBrush m_brBk; CBitmap bmp;2. TestDlg.cpp文件中 构造函数CBkcolorDlg::CBkcolorDlg(CWnd* pParent /*=NULL*/) : CDialog(CBkcolorDlg::IDD, pParent)中,添加如下代码: //用CBitmap ::LoadBitmap加载位图资源 ,IDB_BITMAP_BKBMP是位图资源的ID标识 bmp.LoadBitmap(IDB_BITMAP_BKBMP); 在初始化对话框的函数CBkcolorDlg::OnInitDialog()中添加如下代码 m_brBk.CreatePatternBrush(&bmp); //创建具有指定位图模式的逻辑刷子 bmp.DeleteObject();3. 最后在打开类向导,找到 WM_CTLCOLOR 消息,重载得对应函数 OnCtlColor(), if (pWnd == this){return m_brBk;}return hbr;}这样做就可以给对话框添加简单的背景图片了,此代码经过测试。
8. VC6.0MFC中怎样给对话框添加背景图片
你添加的这个不是bmp位图文件
附加位图的时候,不能单单是把文件后缀改成.bmp
你可以用画图,或者其他看图工具,打开图片后另存为bmp格式
再插入的时候,就会变成位图附加到项目中了
附加了以后,图片的id会变成IDB_BITMAP1,你可以改成自己想要的名字
9. vc++如何添加背景图片
方法有很多种,这里简单介绍三种,以修改对话框的背景为例。
方法一:
1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
m_brush.CreatePatternBrush(&bmp);
3、重载对话框的OnCtlColor,改最后的返回值:
return (HBRUSH)m_brush;
方法二:
把下面这段代码加进OnPaint()里就行了
CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
方法三:使用StretchBlt()函数,具有图像自适应窗体功能
CPaintDC dc(this);
CBitmap m_bmpBK;
m_bmpBK.LoadBitmap(IDB_BITMAP1);
CRect rect;
GetClientRect(&rect);//获得目标尺寸,即窗口客户区的坐标
BITMAP bitMap;//位图结构体
m_bmpBK.GetBitmap(&bitMap);//获得原图片尺寸
CDC dcMem; //目标DC
dcMem.CreateCompatibleDC(&dc); //创建与dc兼容的内存DC
dcMem.SelectObject(&m_bmpBK);//将位图对象m_bmpBK选入内存DC
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
10. VC++中MFC的对话框插入背景图片后怎么让空间和图片看起来比较融合
可以设置控件透明度,这样"融合"效果可能好看点
VC++开发环境右侧属性有个属性Transparent=设置成true;大部分控件都可以设置成透明的,
按钮呢比较特出,需要重绘。