【转】MFC添加背景图片方法的三种方法

原帖1:http://www.cnblogs.com/xiao-cheng/archive/2012/01/17/2325114.html

原帖2:http://www.cnblogs.com/fanghui/p/3565067.html

方法1:使用StretchBlt()函数,具有图像自适应窗体功能

//在Onpaint函数中加入如下代码
//----------给窗口设置背景图片----------------------------
        CPaintDC dc(this);
        CRect   myrect;
        GetClientRect(&myrect);
        CDC   dcMem;
        dcMem.CreateCompatibleDC(&dc);
        CBitmap   bmpBackground;
        bmpBackground.LoadBitmap(IDB_BITMAP1);   //IDB_BITMAP_TOOL是你自己的图对应的ID
        BITMAP   bitmap;
        bmpBackground.GetBitmap(&
        bitmap);
        CBitmap   *pbmpOld=dcMem.SelectObject(&bmpBackground);
        dc.StretchBlt(0,0,myrect.Width(),myrect.Height(),&dcMem,0,0,
        bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

方法2:

1、声明成员变量               CBrush m_brush;
2、在InitDialog中添加代码:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);   //IDB_BITMAP1是图片资源ID
m_brush.CreatePatternBrush(&bmp); 

3、重载对话框的OnCtlColor,改最后的返回值:
return (HBRUSH)m_brush; 

方法3:把下面这段代码加进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);    
时间: 2024-10-26 03:48:12

【转】MFC添加背景图片方法的三种方法的相关文章

MFC添加背景图片

1.在资源里导入一个bmp图片假设名称为IDB_BITMAP1 实现OnPaint方法 CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP是你自己的图对应的ID BITMAP bitmap; bmpBack

c# pictureBox1.Image的获得图片路径的三种方法 winform

代码如下:c# pictureBox1.Image的获得图片路径的三种方法 winform 1.绝对路径:this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径:Application.StartupPath; 可以得到程序根目录 string picPath=Application.StartupPath+"\\1.gif"; 3.获得网络图片的路径 this.pictureBox2.Image=

Linux 添加开机启动项的三种方法

linux 添加开机启动项的三种方法. (1)编辑文件 /etc/rc.local 输入命令:vim /etc/rc.local 将出现类似如下的文本片段: #!/bin/sh## This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you don't# want to do the full Sys V sty

C语言编程 求两个数的平均值方法(三种方法)

第一种方法是最常见的average=(a + b) / 2这种方式,求两个数的平均值 第二种方法是当 a<b 时averag=a+(b-a)/2 这里着重介绍的是第三种方法 average=(a&b) + (a^b)>>1 推导过程如下a + b = (a&b) 2 + (a^b)) --->average=((a&b)2+(a^b))/2 ---->average=(a&b) + (a^b)>>1 eg:两个数为15和515二进制

Win10怎么添加开机启动项?Win10添加开机自动运行软件三种方法

Win10管理开机启动项的方法相信大家已经非常熟悉,msconfig命令各系统都通用,那么很多用户发觉Win10和Win7 XP等系统不同,没有启动文件夹,那么我们怎么添加开机启动项呢?如晨软件或程序没有开机启动设置的话,是的,在Win10中添加开机启动项虽然麻烦了些,但是还是可以设置的,下面小编就分享几种方法. 方法一:开机启动文件夹 1.我们打开文件夹:C:\Users(用户)\Administrator(当前用户名)\AppData\Roaming\Microsoft\Windows\St

MFC 打开外部EXE文件的三种方法

目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了<vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess>,我全文转载一下,另外后面加点自己的总结(黑体部分,除了标题). 三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateP

[.Net] DataTable添加列和行的三种方法

#region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); dc.AutoIncrement =true;//自动增加 dc.AutoIncrementSeed =1;//起始为1 dc.AutoIncrementStep =1

DataTable添加列和行的三种方法

#region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); dc.AutoIncrement =true;//自动增加 dc.AutoIncrementSeed =1;//起始为1 dc.AutoIncrementStep =1

iOS图片拉伸的三种方法

方法一: iOS中有个叫端盖(end cap)的概念,用来指定图片中的哪一部分不用拉伸,上下左右不需要被拉伸的边缘就称为端盖. 1 // use resizableImageWithCapInsets: and capInsets. 3 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED; 4 @pr