java窗体客户_更改窗口客户区的背景

看多了简单的纯白色背景客户区,有没有想过让自己的程序中的客户区变成以位图(BMP)作为背景呢?那么下面提供的方法可以帮得到你。

接下来我会用两种方法来实现将位图加入显示到客户区中。不过首先要说的是,在此之前我们要准备好一张需要加到客户区的位图,并把它加入到程序的资源文件中。

第一种方法以BitBlt来实现。我

们新建一个单文档MFC程序,把位图加入到资源后,我们重点把代码写进C××View(此为继承于CView的类)中的OnDraw函数中。也就是说在窗口重绘时就将图片加进客户区。

我们看源代码:

void CLoadBitmapView::OnDraw(CDC* pDC) {

CLoadBitmapDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CBitmap bitmap;

//这里的IDB_BITMAP_TEXT是我的工程中的位图资源

//将位图资源加入到CBitmap的对象中

bitmap.LoadBitmap(IDB_BITMAP_TEXT);

//创建一个设备对象

CDC drawDC;

//为指定设备创建信息上下文。这提供了一种不创建设备上下文即获取有关设备信息的快速方式

drawDC.CreateCompatibleDC(pDC);

//加入位图对象到DC对象

drawDC.SelectObject(&bitmap);

BITMAP bmpInfo;

//获取位图信息

bitmap.GetObject(sizeof(bmpInfo),&bmpInfo);

//指定要执行的光栅操作。光栅操作代码定义GDC如何合并输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。

pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&drawDC,0,0,SRCCOPY);

}

测试一下,位图是不是已经加入了客户区呢?

第二种方法,是通过画刷来对客户区进行填充来实现的。

我们来看源代码:

void CLoadBitmapView::OnDraw(CDC* pDC)

{

CLoadBitmapDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

//选入设备

CBitmap bitmap;

bitmap.LoadBitmap(IDB_BITMAP_TEXT);

CBrush bru;

CRgn rgn;

CRect rect;

//获取客户区的区域信息

GetClientRect(&rect);

rgn.CreateRectRgnIndirect(&rect);

//位图指定的模式初始化画刷

bru.CreatePatternBrush(&bitmap);

//用指定画刷和指定区域来填充

pDC->FillRgn(&rgn,&bru);

}

运行一下,是不是同样可以实现呢?

from:

posted on 2006-11-16 20:03 weidagang2046 阅读(815) 评论(0)  编辑  收藏 所属分类: Windows

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值