MFC 添加背景图片并让控件背景透明和TREEVIEW添加背景图片

MFC 添加背景图片并让控件背景透明和TREEVIEW添加背景图片
MFC 添加背景图片并让控件背景透明和TREEVIEW添加背景图片

MFC 添加背景图片并让控件背景透明

收藏我要投稿/*添加背景图片*/

BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CDialog::OnEraseBkgnd(pDC);

HBITMAP m_hBitmap;

HDC m_hBkDC;

m_hBitmap

= ::LoadBitmap(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP2));

m_hBkDC = ::CreateCompatibleDC(pDC-> m_hDC);

if(m_hBitmap && m_hBkDC)

{

::SelectObject(m_hBkDC,m_hBitmap);

::StretchBlt(pDC-> m_hDC,0,0,700,610,m_hBkDC,0,0,700,610,SRCCOPY);

::DeleteObject(m_hBitmap);

::DeleteDC(m_hBkDC);

}

return TRUE;

}

/*设置控件背景透明*/

HBRUSH CTOOLDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor == CTLCOLOR_STATIC )

{

pDC->SetBkMode(TRANSPARENT);//设置背景透明

pDC->SetTextColor(RGB(255,255,0));//设置字体为黄色

return (HBRUSH)::GetStockObject(NULL_BRUSH);

}

// TODO: 如果默认的不是所需画笔,则返回另一个画笔

return hbr;

}

treeview添加背景图片

(2012-01-31 13:58:53)

转载▼

标签:

分类:Delphi

delphi

treevie

w

杂谈

在uses中加types;

procedure TForm1.TreeView1CustomDraw(Sender: TCustomTreeView; const ARect: TRect; var DefaultDraw: Boolean);

var

btop, bLeft: Integer;

rect: Trect;

x, y, h: integer;

begin

x := GetScrollPos(sender.Handle, SB_HORZ);

y := GetScrollPos(sender.Handle, SB_VERT);

h := 17;

rect := sender.ClientRect;

rect.Bottom := rect.Top + sender.Height;

btop := rect.Bottom - Image1.Picture.Bitmap.Height - y *

h;

bleft := rect.Right - Image1.Picture.Bitmap.Width - x;

sender.Canvas.FillRect(Arect);

rect := Types.rect(bleft - 1, btop - 1, bleft +

Image1.Picture.Bitmap.Width + 1, bTop + Image1.Picture.Bitmap.Height + 1);

if IntersectRect(rect, rect, arect) then

BitBlt(sender.Canvas.Handle, Arect.Left, Arect.Top, Arect.Right - Arect.Left ,

Arect.Bottom - Arect.top ,

Image1.Picture.Bitmap.Canvas.Handle, Arect.Left - bleft, Arect.Top - btop, SRCCOPY);

DefaultDraw := true;

end;

解决图片闪烁,移动:

procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);

begin

treeview1.Invalidate;

end;

procedure TForm1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode; var AllowCollapse: Boolean);

begin

treeview1.Invalidate;

end;

还有2种方法给treeview添加背景图片:

在formcreate事件中写:treeview.brush.bitmap:=image.picture.bitmap; 在treeview的oncustomDraw事件中写:

with treeview do

begin

Canvas.Brush.bitmap:=image.picture.bitmap;

canvas.FillRect(ARect);

end;

mfc载入图片

我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) 非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点击打开属性, 将type下拉框选择BITMAP,紧跟着下面就出现一个

Image下拉框, 拉开就会看到所有已经载入好的图片, 选择你要的图片.运行程序即可看到. 方法2.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject(); . . . return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

如何让图片背景变透明

如何让图片背景变透明 (透明图片制作教程) 在有的时候,我们需哟图片背景变透明,以便换成其他背景。另外在百事网上传的图片中用到的水银都需要用到透明图片,那么如何让图片变透明呢?下面百事网编辑为大家分享一种非常简单的方法,简单几步,轻松让图片背景变透明。 之前看到网上不少教程介绍你怎么让图片变透明,不过采用的是PS软件,我们知道ps是专业的制图工具,软件很大,大概在几百M,用户需要下载很久,并且PS软件比较难安装于是用,一般都需要序列号激活,因此对于一些简单的图片处理,其实小编是建议不要用宰牛刀杀鸡了,下面本文教大家使用一款非常小巧的Ulead GIF Animator软件实现将图片背景变透明。 首先下载Ulead GIF Animator软件(仅5M,非常小巧),下载地址请进入百度网盘下载: 下载地址:ulead gif animator(动画gif制作,动画gif减肥等)V5.05 汉化绿色版

1、下载之后请解压,以上是绿色版本,无需安装,解压后,进入UleadGIFAnimator-v5.05目录,找到“Ulead GIF Animator 5”直接运行即可打开软件,如下图: 打开Ulead GIF Animator 5软件 2、打开软件之后,首先选择顶部的文件菜单里面的打开需要处理的图片文件,如下图: 打开需要处理的图片文件

3、然后选择“魔术棒”工具,再点击图片,使图片出虚线框,如下图: 使用魔术棒工具 4、之后呢再选择一下“选取工具”,然后再点击图片选中图片,最后再按下电脑键盘上的Del键,即可让图片的背景变成透明状了,如下图: 删除图片背景

mfc中插入背景图片

1、添加背景图片到“Bitmap”资源里。方法为“插入——资源”,如果还没有Bitmap,则新建一个Bitmap,否则选择资源 类型为“Bitmap”后“引入”想要插入的背景图片,我加入的背景图片如图1,加入过程如图2。 图1

图2 说明:引入的图片可以插入256色、16位色或更高色的图片,若是其他格式图片可用PS打开再另存为BMP、24位windows格式就可 以了。提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以了,没有影响的。 2、定位到void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码: else { //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect;

GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP); //IDB_BITMAP是你自己的图对应的ID ,由于我刚刚加入的位图资源 //被我命名成了IDB_Bg,因而我这句就是bmpBackground.LoadBitmap(IDB_Bg); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); } 3、编译运行结果如图3。

如何让图片背景变透明透明图片制作方法

高薪职业首先下载Ulead GIF Animator软件(仅5M,非常小巧),下载地址请进入百度网盘下载: 1、下载之后请解压,以上是绿色版本,无需安装,解压后,进入目录,找到“Ulead GIF Animator 5”直接运行即可打开软件,如下图: 打开Ulead GIF Animator 5软件 2、打开软件之后,首先选择顶部的文件菜单里面的打开需要处理的图片文件,如下图: 打开需要处理的图片文件 3、然后选择“魔术棒”工具,再点击图片,使图片出虚线框,如下图:

使用魔术棒工具? 4、之后呢再选择一下“选取工具”,然后再点击图片选中图片,最后再按下电脑键盘上的Del键,即可让图片的背景变成透明状了,如下图: 删除图片背景 ? 5、制作完了就可以保存了,如果你想换个其他背景的话,请再在顶部“文件”菜单下选择“添加图像”即可,如下图: ?

添加图像 ? 您可以添加一些自己喜欢的背景图片,即可实现为图片换背景或者场景了,如果只显示背景。那么注意一下在右侧的图层顺序调整,把背景图层拖至底部即可,这里就不介绍了,大家自己去研究下。 ? 5、图片弄好了,注意需要保存为GIF格式喔,其他格式图片不能完成的保留透明背景,如果你已经换了背景,不需要透明,那么也可以生成其他图片格式,如下图。 ? 文件菜单里选择另存图片保存 ? 介绍到这里,相信大家对于如何让图片背景变透明已经明白了,大家可以想象一

个,也可以将自己的背景图片换掉,不过需要背景颜色比较单一的情况下会比较好换,背景太复杂魔术棒工具也很难选取背景,那么建议使用专业的PS软件处理吧。 解析智能手机拍摄出高质量图片的技巧:

MFC背景图片修改

MFC添加背景图片方法 此文系转载,忘了博客地址了 VC++中如何给对话框加背景图片(2010-03-22 16:57:59) 方法一: 1、声明成员变量CBrush m_brush; 2、在InitDialog中添加代码: CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是图片资源ID m_brush.CreatePatternBrush(&bmp); 3、重载对话框的OnCtlColor,改最后的返回值: 1 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 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);

图片背景设置透明

百度空间| 1.Authorware 在Authorware中,我们对在显示图标中导入的图片设置背景透明的常用的方法是:双击选择工具,然后选择其中的透明(如图1)。这种方法非常简单,也很方便。但它的不足之处也是很明显的:我们看图1中的两张小动物的图片,这两幅图片原来的背景都是白色,设置了透明之后,动物的四周围都有白边,并不是很干净。而且第二张图片中,小章鱼的眼睛本来是白色的,因为白色背景被透明了,结果眼睛也透明了。而且,用这种方法使背景透明,只对白色背景有效,如果背景是其他颜色背景或者比较复杂,就无能为力了。 图1 Authorware中设置透明2.PowerPoint 如果在PowerPoint中对导入的图片设置背景透明,可以把图片工具栏调出来,选择其中的“设置透明色”工具,然后在图片中单击想透明的背景颜色即可(如图2)。应该说在PowerPoint中设置透明比在Authorware中方便多了,因为它不限定是白色,可以是任何颜色。但缺点也是有的,一是在一张图片中只能设置一种颜色,第二个缺点与在Authorware中类似,我们从图2中也可以看得出,右边人物的眼睛的颜色因为跟背景色相同,结果也被透明了。 图2 PowerPoint中设置透明 3.Flash 对于导入的位图,Flash提供的编辑功能很有限。我们对于导入的图片,如果要使背景透明的话,也不是没办法。一般情况下,选定导入的图片,然后选择

“修改/分离”命令(或直接按下“Ctrl+B”键,即可将导入的图片打散),再用选择工具中的魔术棒工具,选定背景色,将之删除。如果还有其他的无关背景,可再用橡皮工具将之擦除,这样,可以取得比较好的效果(如图3)。但这种方法操作比较复杂,而且很费时间。 图3 Flash中设置透明 从以上可以看出,三种课件制作软件中,对于背景的透明,各有自己的一套办法,但使用起来,都不能得心应手,有没有一种更好的办法呢? 在回答这个问题之前,我们简单地说明一下哪些图片格式可以保存透明信息。在我们常用图片的格式中,像BMP、JPG格式的图片是不能保存透明信息的。GIF格式的图片可以保存透明信息,但GIF格式的图片最多只能有256种颜色,因而只能使用在对图片要求不高的场合。比较理想的是图片处理软件Ph otoshop的图片格式PSD,但以上三种常用课件制作软件中,只有Authorware 可以支持PSD格式,而另外两种均不支持。所以今天我们这里要介绍另外一种格式:PNG格式,PNG格式的图片支持无损压缩,而且可以很好地保存透明信息,最重要的一点是,以上三种软件都可以支持该格式。下面我们就来看一下,如何利用Photoshop输出带有透明信息的PNG格式的图片。 启动Photoshop,打开所需的图片文件。这时,我们在图层面板中可以看到一个名为“背景”的图层,因为在Photoshop中,背景图层是不允许直接编辑的,要把它转换成普通的图层。双击该图层,出现“新图层”对话框(如图4),直接点[好],即可将“背景”图层转换成普通图层。 图4 “新图层”对话框 接下来,在工具面板中选择魔术棒工具,单击需要删除的背景色,然后按下“De

MFC 在对话框显示图片的多种方法

MFC 在对话框显示图片的多种方法 我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) 非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点击打开属性, 将type下拉框选择BITMAP,紧跟着下面就出现一个

Image下拉框, 拉开就会看到所有已经载入好的图片, 选择你要的图片.运行程序即可看到. 方法2.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject(); . . . return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

如何让图片背景变透明 透明图片制作方法

高薪职业https://www.360docs.net/doc/c518625385.html, 首先下载Ulead GIF Animator软件(仅5M,非常小巧),下载地址请进入百度网盘下载: 1、下载之后请解压,以上是绿色版本,无需安装,解压后,进入UleadGIFAnimator-v5.05目录,找到“Ulead GIF Animator 5”直接运行即可打开软件,如下图: 打开Ulead GIF Animator 5软件 2、打开软件之后,首先选择顶部的文件菜单里面的打开需要处理的图片文件,如下图: 打开需要处理的图片文件

3、然后选择“魔术棒”工具,再点击图片,使图片出虚线框,如下图: 使用魔术棒工具 4、之后呢再选择一下“选取工具”,然后再点击图片选中图片,最后再按下电脑键盘上的Del键,即可让图片的背景变成透明状了,如下图: 删除图片背景 5、制作完了就可以保存了,如果你想换个其他背景的话,请再在顶部“文件”菜单下选择“添加图像”即可,如下图:

添加图像 您可以添加一些自己喜欢的背景图片,即可实现为图片换背景或者场景了,如果只显示背景。那么注意一下在右侧的图层顺序调整,把背景图层拖至底部即可,这里就不介绍了,大家自己去研究下。 5、图片弄好了,注意需要保存为GIF格式喔,其他格式图片不能完成的保留透明背景,如果你已经换了背景,不需要透明,那么也可以生成其他图片格式,如下图。 文件菜单里选择另存图片保存 介绍到这里,相信大家对于如何让图片背景变透明已经明白了,大家可以想象一

个,也可以将自己的背景图片换掉,不过需要背景颜色比较单一的情况下会比较好换,背景太复杂魔术棒工具也很难选取背景,那么建议使用专业的PS软件处理吧。 解析智能手机拍摄出高质量图片的技巧: https://www.360docs.net/doc/c518625385.html,/Pages/Details.aspx?id=32767

MFC设置窗体背景图片(画刷)

MFC设置窗体背景图片(画刷) 先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中: CBrush m_brBk;//在public中定义 TestDlg.cpp中: 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control } 再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(), 添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; } 按照上面的方法一路COPY下来运行,OK!并且由于图片是做为背景显示的,所以再添的按钮都能很好的显示出来,非常方便。 总结一下其中出现的变量和函数。 CBrush:类CBrush封装了Windows图形设备接口(GDI)中的画刷,画刷也就是采取什么方案填充图形的背景的工具。 OnInitDialog ( ):用于对对话框类的变量的初始化(注意:是在产生对话框之前就初始化),是WM_INITDIALOG消息产生的消息处理函数,覆盖该函数可改变对话框初始设置。 用法: virtual BOOL OnInitDialog();返回值指定对话框是否对它的一个控件设置输入焦点。如果OnInitDialog返回非零值,Windows 将输入焦点设在对话框的第一个控件上,只有在对话框明确将输入焦点设在某控件上,应用返回0。 CBitmap:类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供操纵位图的成员函数。 LoadBitmap ( ):CBitmap类的一个成员函数,从应用的可执行文件中加载一个命名的位图资源来初始化位图对象。 用法:

MFC添加背景图片

问题 有的程序员希望在自己的应用程序中以有趣味的位图来代替对话框中令人讨厌的灰色背景,希望位图在对话框中看起来象墙纸而且并不影响对话框中的控制或静态文本的显示。 许多程序员找不到一个改变窗口背景的简单方法,是否有方法利用Windows API 函数来改变对话框的背景为某个位图呢? 方法 改变对话框的背景为某个位图并不困难,关键是需要清楚对话框和窗口是如何设置背景颜色的,以及程序员应该如何修改对话框和窗口改变显示的行为。 当Windows 准备改变对话框背景的颜色时,通常发送两个消息给对话框。第一个消息是WM_ERASEBKGND,此消息指示对话框绘制对话框的背景颜色,以“抹去”屏幕上对话框显示区域的任何显示。 第二个消息是WM_CTLCOLOR,发送此消息给对话框或窗口来表示Windows 需要知道对话框中控制的颜色。 在本节中,将重置对消息WM_ERASEBKGND 的处理,以便将位图绘制在窗口的背景上。另外,将重置对消息WM_CTLCOLOR 的处理,以避免对话框中的控制“剪补”位图。最后的结果是对话框的背景位图绘制在对话框背景上,控制在背景位图的“上面”。 步骤 按照下列步骤实现一个例子程序。运行此例子程序,选择菜单Dialog 和菜单项Bitmap Background,将弹出一个对话框,显示背景位图和几个控制。 实现例子程序的具体步骤如下: 1.在Visual C++中,利用AppWizard 创建新的项目文件,并命名此项目文件为 Ld145。 2.进入资源编辑器并创建新的对话框模板。在对话框中,添加几个静态文本域和编辑域,以及几个单选按钮和列表框。对话框的实际组成并不重要,只要能够覆盖部分位图就可以了。 3.选择ClassWizard,为刚创建的对话框模板创建对话框类,新类命名为 CBitma PB kgdDlg。 4.在资源编辑器中创建新的位图。 5.进入ClassWizard,从下拉列表中选择CBitmapBkgdDlg,从对象列表中选择对象CBitmapBkgdDlg,从消息列表中选择消息WM_INITDIALOG,点击按钮Add Function,在CBitmapBkgdDlg 的方法OnInitDialog 中添加下列代码: BOOL CBitmapBkgdDlg::OnInitDialog() { CBitmap * pBmpOld; RECT rectClient; VERIFY(m_brush=(HBRUSH)GetStockObject(HOLLOW_BRUSH)); VERIFY(m_Bitmap.LoadBitmap(IDB_BITMAP1)); m_Bitmap.GetObject(sizeof(BITMAP),&m_bmInfo);

MFC中picture控件显示图片

PictureBox控件的主要作用是为用户显示图片。实际显示图片由Picture属性决定。Picture属性包括被显示的图片的文件名(及可选的路径名)。注意窗体对象也具有Picture属性,通过设置该属性可直接在窗体背景上显示图片。 要在运行时显示或替换图片,可利用函数LoadPicture来设置Picture属性。提供图片文件名和可选路径名,由LoadPicture函数处理加载和显示图片的细节。 picMain.Picture = LoadPicture("VANGOGH.BMP") PictureBox控件具有AutoSize属性,当该属性设置为True时,PictureBox能自动调整大小与显示的图片匹配。如果要用AutoSize属性设置为True的PictureBox,设计窗体时就需要特别小心。图片将不考虑窗体上的其它控件而调整大小,这可能导致意想不到的后果,如覆盖其它控件。设计时应通过加载每一幅图片来检查是否有这种现象发生。 vc picture控件的分类进行拉总结, (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) vc picture控件非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2,然后在对话框上添加一个picture控件,右键点击打开属性,将type下拉框选择BITMAP,紧跟着Image下面就出现一个下拉框,拉开就会看到所有已经载入好的图片,选择你要的图片.运行程序即可看到. 方法2vc picture控件.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

MFC对话框背景---图片背景---背景色

对话框的背景 1、添加位图背景 首先在资源视图中添加bmp图片:选择项目名右击---添加—添加资源---Bitmap---导入---选择res文件中的位图(如果res文件中无位图请提前添加),此时可以知道位图ID为IDB_BITMAP1 (1)picture控件添加背景 在对话框中添加picture控件,并修改其属性,选中picture控件在属性表中修改Type为Bitmap,Image为IDB_BITMAP1。此时图片就显示在对话框中 (2)在CPP文件中初始化显示位图 添加位图后,在源文件XXXDlg.cpp的void C XXX Dlg::OnPaint()函数中添加初始化代码如下: void CbeijingDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpPri=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SR CCOPY); } }

MFC中设置对话框颜色、添加背景图片、添加音乐的方法

一、设置背景颜色的三种方法: 1、我们知道程序在运行的时候会调用OnPain函数,那么我们可以在这里设置背景颜色。void CFlipCardsDlg::OnPaint() { if (IsIconic()) { //保持不变 } else { CRect rc; GetClientRect( &rc );// 获取客户区 CPaintDC dc(this); dc.FillSolidRect(&rc, RGB(0,160,0)); // 填充客户区颜色 CDialog::OnPaint(); } } 2、第二种方法只要一条语句,但是这里要注意这里绘制的颜色是针对程序中所有的对话框(如果是单文档的话,好像不行) SetDialogBkColor(RGB(0,0,255),RGB(255,0,0)); // 前一个RGB是背景色,后一RGB是文本颜色 该函数放在工程的APP文件的初始化函数中。 3、第三种方法,利用ClassWizard重载OnCtlColor(),即WM_CTLCOLOR消息 在要着色的对话框中申明一个变量,CBRUSH m_hbrush;然后在项目的Dlg类初始化函数中给m_hbrush赋值。

m_brush.CreateSolidBrush(RGB(0, 255, 0)); 然后在OnCtlColor(...)返回该画刷就可以了,如下。 HBRUSH CFlipCardsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here switch (nCtlColor) { case CTLCOLOR_DLG: HBRUSH aBrush; aBrush = CreateSolidBrush(RGB(0, 150, 0)); hbr = aBrush; break; } // TODO: Return a different brush if the default is not desired return hbr; } 这样为对话框着色就可以实现了。 二、给MFC添加背景图图片代码: 定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码: //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect; GetClientRect(&rect);

用PS将图片背景设置成透明

个人收集整理-ZQ 年月日星期四下午 方法一: 、魔术棒选取背景区域,然后删除,将文件存存为格式. 、新建一个文件,新建时将背景设置为透明.将刚才存地文件置入现在地这个透明背景文件中. 、保存为格式. 方法二: 在网页制作中,往往会发生这种事情,当你把辛辛苦苦制作好地图像插到网页中后,会发现这幅图像地背景颜色和网页背景颜色怎么看也不协调.图片在那里好像一块补丁,去掉吧,太可惜了,不去掉吧,看着实在别扭.这时你就要用透明地背景图像来帮忙了.关于怎么使图像地透明背景,在一些杂志中介绍了不少方法,但步骤都很麻烦,而且效果也不是太好.其实在最新地中,只需简单几步,就可以“搞定”一幅透明背景图像.下面就是操作步骤: . 打开你要处理地图片(可以是任何格式地),先调整它地尺寸大小,这一点虽然与透明背景图像没有什么联系,但图像太大会影响浏览速度,谁想只为了看一幅图片而“等你等得我心疼”呢!所以,在不影响视觉效果前提下应把图像尽量缩小,而且图像地长宽要和它在网页中地大小基本一致,否则图像插入后会发生变形.调节尺寸可用(图像)菜单中地(图像尺寸)命令. . 用套索工具选定需要地部分,这一步是为了把所需图像同原图中地不透明背景分离开来. 以上地版本中增加了磁性套索工具,这个工具对于选定与背景颜色反差较大地部分非常方便,但也需要一定耐心,才能把所需图像完整地选下来.然后使用“(编辑)”菜单项中地“(复制)”命令,把所选地内容复制到剪贴板中. . 使用“(文件)”菜单中地“(新建)”命令新建一图像.尺寸使用对话框中地默认值,这是系统根据剪贴板中地数据给出地最小值.在“”这一栏中,一定要把“(透明)”项选中,这是是否能生成透明背景图像地关健.单击“”后,如果不出意外地话,你会看见一幅有网格地新图像,其实这是一幅背景透明地空白图像. . 用“(编辑)”菜单中地“(粘贴)”命令把剪贴板地内容粘贴到新图像中,在左边地工具栏中选择移动工具,把图像移到合适地位置.到这一步,基本地操作已经完成了,记住在这里千万不要合并层,否则前面地工作就前功尽弃了. . 最后选择“(文件)”菜单中地“ (另存为一备份)”命令保存文件,在“ (另存为)”选择框中选定*格式,单击“”进入下一步. . 在下一步出现地对话框中,同样也要选择“(透明)项”,其他各项使用默认值,单击“”完成. 一幅完美地透明背景图像出现咯!赶快试一试,把它插入到网页中,预览一下!天衣无缝咯!呵呵... 1 / 1

MFC中更改背景图片

1.如果你建的是对话框应用程序,可以有以下方法改变对话框的背景色重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下: ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: class CExampleDlgDlg : public CDialog { ... protected: CBrush m_brush; ... }; ---- ②在OnInitDialog()函数中添加如下代码: BOOL CExampleDlgDlg::OnInitDialog() { ... // TODO: Add extra initialization here m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 生成一绿色刷子 ... } ---- 步骤③利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息):HBRUSH CExampleDlgDlg::OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); //在这加一条是否为对话框的判断语句 if(nCtlColor ==CTLCOLOR_DLG) return m_brush; //返加绿色刷子 return hbr; } 2.如果建立的是单文档程序 CDC* pDC = GetDC(); CRect rect; GetClientRect(&rect); //加载背景位图 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //图片ID BITMAP bmp; bitmap.GetBitmap(&bmp);

MFC 对话框 背景图片 以及消除 字体重影 字体重叠

很多人都想改变对话框的背景图,其实很简单,只需要一个函数就可以了,不过还是有问题的,下面讲述。 只需要响应WM_ERASEBKGND消息,然后重载OnEraseBkgnd(CDC*pDC)这个函数就可以,首先我们要添加消息响应,由于该消息不能用MFC ClassWizard添加,因为ClassWizard 没有该消息添加的选项,我们需要手动添加,只需要在消息响应MAP添加一下ON_WM_ERASEBKGND(),如下所示: BEGIN_MESSAGE_MAP(CSerialTestDlg, CDialog) //{{AFX_MSG_MAP(CSerialTestDlg) ON_WM_ERASEBKGND()//添加重绘背景消息响应 //}}AFX_MSG_MAP END_MESSAGE_MAP() 我们然后进行消息响应,添加消息响应函数,然后在对话框类的声明文件添加该函数的声明virtual BOOL OnEraseBkgnd(CDC*pDC);在实现文件中进行该函数的书写,如: BOOL CSerialTestDlg::OnEraseBkgnd(CDC*pDC) { CBitmap m_bitmap; m_bitmap.LoadBitmap(IDB_DLGBK);//加载背景图片,选择你对应的图片ID CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&m_bitmap); CRect rect; GetWindowRect(&rect); ScreenToClient(&rect);//选择客户区域 BITMAP bmp; m_bitmap.GetBitmap(&bmp); pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmW idth,bmp.bmHeight,SRCCOPY);//绘制BMP背景图 m_bitmap.DeleteObject(); return TRUE; } 但是这样做一般就可以,细心的人会发现字体有重叠,比如说静态文本框和EDIT控件,如果选择只读模式,作为输出,这时EDIT的背景是BMP背景图片,但是字体重叠,如下图,我这样就行消除。

怎样让图片的背景变成透明的

怎样让图片的背景迅速变成透明的 透明背景的图片可以随意放 在你日志的某一理想地方,不会 担心与你日志的背景色不和谐还 可以用背景透明的的图片制作成 动画小图片。 那么,怎样将JPG格式的图 片背景迅速地变成透明的呢?关 键在于能不能迅速地选中要删除 的背景部分。要想达到这个目的, 运用PS中的魔术棒这个工具是 最理想的。(说明:只适合于背 景色与图像边缘的颜色反差大的 图片)操作的步骤如下: 1、打开一张图片后,在 右下角的图层面板上用鼠标左键快速双击背景图层为图片解锁,(箭头标示处)然后在弹出的对话框中点击“好”

2、在左边的工具栏中选择魔术棒工具(箭头指示处) 3、在上面的属性栏内设置“容差”为20,(如果背景色不纯,还可缩小容差)再在背景区域用左键单击一下,背景区域就出现了蚂蚁线,表示背景区域被选中;(如果一次没有全部选中,就左手按下shift键,再用左键多次点击背景区域,直到背景全部选中为止)。

4、在上面的菜单栏中点击“选择”,再在弹出的菜单中选择“羽化”; 5、在弹出的对话框中设置为“1”像素,点确定;

6、下面就可以删除背景了,方法 有三种:a、Ctrl+D;b、按Delete 键; c、在上面菜单栏中选择“编辑”— —再选择“剪切”或“清除”; 7、下一步是看看背景清除干净没 有,方法是:先在图像图层下面添加一 个图层,即:左手按着Ctrl键,再左 键单击一下右下角图层面板上的“添 加图层”按钮,(箭头所指处)这样 背景图层下就多了一个图层; 8、在左边的工具栏内内选择“油漆桶工具”,再在工具栏的红色方块处设置一种颜色;

mfc背景音乐与图片的实现

MFC播放声音文件 一.播放声音文件的简单方法 在VC++ 中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC++中提供的声音播放函数BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound );其中参数lpszSound是需要播放声音的.WAV文件的路径和文件名,hmod在这里为NULL,fuSound是播放声音的标志,详细说明请参考VC++中的帮助。例如播放C:\sound\music.wav可以用sndPlaySound ( "c:\\sound\\music.wav ",SND_ASYNC);或PlaySound( "c:\\sound\\music.wav ",NULL, SND_ASYNC|SND_NODEFAULT );如果没有找到music.wav文件,第一种格式将播放系统默认的声音,第二种格式不会播放系统默认的声音。 二.将声音文件加入到程序中 在VC++的程序设计中,可以利用各种标准的资源,如位图,菜单,对话框等。同时VC++也允许用户自定义资源,因此我们可以将声音文件作为用户自定义资源加入程序资源文件中,经过编译连接生成EXE 文件,实现无.WAV文件的声音播放。 要实现作为资源的声音文件的播放,首先要在资源管理器中加入待播放的声音文件(实现过程并不复杂,这里不在叙述)。假设生成的声音文件资源标识符为IDR_WAVE1。在播放时只需要调用下面的语句: PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(), SND_ASYNC|SND_ RESOURCE|SND_NODEFAULT|SND_LOOP); 其中MAKEINTRESOURCE()宏将整数资源标识符转变为字符串,AfxGetResourceHandle()函数返回包含资源的模块句柄, SND_RESOURCE是必须的标志。 作为资源的声音文件的第二种播放方法是把资源读入内存后作为内存数据播放。具体步骤入下:1.获得包含资源的模块句柄: HMODULE hmod=AfxGetResourceHandle();

实现png图片和png背景透明的代码

实现png图片和png背景透明的代码(支持多浏览器) Firefox和Opera对PNG的支持非常的好,都是IE却无视PNG图片这一特性的“存在”,虽然IE7已经支持都是IE6还是不行。虽然有让IE6支持PNG透明背景的JS程序,都是不是很方便,还是用CSS来实现的好。使用到的就是:IE5.5+的AlphaImageLoader 滤镜。 1.png背景透明解决办法 #div1 { height: 600px; width: 260px; padding: 20px; background-repeat: repeat; } html>body #div1 { background-repeat: repeat;background-image: url(bj1.png); } * #div1 {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png") } 附加:IE才识别的通配符(*),来定义IE浏览器中的滤镜 Firefox、Opera等完全支持PNG透明图片的浏览器也支持子选择器(>) 语法: filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL ) 属性: enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false true : 默认值。滤镜激活。 false : 滤镜被禁止。

相关文档
最新文档