使用bitbltmasked去除图形白色区域,使之变透明(源代码)
来源:互联网 发布:无人机三维建模软件 编辑:程序博客网 时间:2024/05/16 19:49
/*
============================================================================
Name : TestMaskAppView.h
Author :
Copyright : Your copyright notice
Description : Declares view class for application.
============================================================================
*/
#ifndef __TESTMASKAPPVIEW_h__
#define __TESTMASKAPPVIEW_h__
// INCLUDES
#include <coecntrl.h>
// CLASS DECLARATION
class CTestMaskAppView : public CCoeControl
{
public:
static CTestMaskAppView* NewL(const TRect& aRect);
static CTestMaskAppView* NewLC(const TRect& aRect);
virtual ~CTestMaskAppView();
public:
void Draw(const TRect& aRect) const;
virtual void SizeChanged();
virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
void LoadBitmap();
private:
void ConstructL(const TRect& aRect);
CTestMaskAppView();
private:
CFbsBitmap* iBitmapBack;
CFbsBitmap* iBitmap;
CFbsBitmap* iMaskBitmap;
TRect iRect;
CFbsBitmap* iBitmap1;
CFbsBitmap* iMaskBitmap1;
TRect iRect1;
};
#endif // __TESTMASKAPPVIEW_h__
// End of File
/*
============================================================================
Name : TestMaskAppView.cpp
Author :
Copyright : Your copyright notice
Description : Application view implementation
============================================================================
*/
// INCLUDE FILES
#include <coemain.h>
#include "TestMaskAppView.h"
// ============================ MEMBER FUNCTIONS ===============================
CTestMaskAppView* CTestMaskAppView::NewL(const TRect& aRect)
{
CTestMaskAppView* self = CTestMaskAppView::NewLC(aRect);
CleanupStack::Pop(self);
return self;
}
CTestMaskAppView* CTestMaskAppView::NewLC(const TRect& aRect)
{
CTestMaskAppView* self = new (ELeave) CTestMaskAppView;
CleanupStack::PushL(self);
self->ConstructL(aRect);
return self;
}
void CTestMaskAppView::ConstructL(const TRect& aRect)
{
CreateWindowL();
LoadBitmap();
SetRect(aRect);
ActivateL();
}
CTestMaskAppView::CTestMaskAppView()
{
// No implementation required
}
CTestMaskAppView::~CTestMaskAppView()
{
delete iBitmapBack;
delete iBitmap;
delete iMaskBitmap;
delete iBitmap1;
delete iMaskBitmap1;
}
void CTestMaskAppView::Draw(const TRect& /*aRect*/) const
{
CWindowGc& gc = SystemGc();
TRect drawRect(Rect());
gc.Clear(drawRect);
gc.BitBlt(Position(),iBitmapBack);
gc.BitBltMasked(TPoint(5,305),iBitmap,iRect,iMaskBitmap,ETrue); //掩码图——白底黑图 ,关键之一
gc.BitBltMasked(TPoint(225,305),iBitmap1,iRect1,iMaskBitmap1,EFalse); //掩码图——黑底白图
}
void CTestMaskAppView::SizeChanged()
{
DrawNow();
}
void CTestMaskAppView::HandlePointerEventL(const TPointerEvent& aPointerEvent)
{
CCoeControl::HandlePointerEventL(aPointerEvent);
}
void CTestMaskAppView::LoadBitmap()
{
_LIT(multiBitmapFile,"c://Data//mbm//TestMask.mbm");
iBitmapBack = new (ELeave) CFbsBitmap();
iBitmap = new (ELeave) CFbsBitmap();
iMaskBitmap = new (ELeave) CFbsBitmap();
iBitmap1 = new (ELeave) CFbsBitmap();
iMaskBitmap1 = new (ELeave) CFbsBitmap();
User::LeaveIfError(iBitmapBack->Load(multiBitmapFile,0,ETrue));
User::LeaveIfError(iBitmap->Load(multiBitmapFile,1,ETrue));
User::LeaveIfError(iMaskBitmap->Load(multiBitmapFile,2,ETrue));
User::LeaveIfError(iBitmap1->Load(multiBitmapFile,3,ETrue));
User::LeaveIfError(iMaskBitmap1->Load(multiBitmapFile,4,ETrue));
iRect = TRect (TPoint(0,0),iBitmap->SizeInPixels()); //关键之2:
iRect1 = TRect (TPoint(0,0),iBitmap1->SizeInPixels());
}
// End of File
- 使用bitbltmasked去除图形白色区域,使之变透明(源代码)
- 将白色背景图片变透明
- 将白色背景图片变透明
- 图片的白色背景变透明
- java 图片如何让白色变透明
- ps怎么把白色背景变透明
- BMP图片反转(黑色变白色,白色变黑色)
- PS怎么让图的白色背景变透明?
- PS将android图标白色背景变透明
- 把bmp图片的白色区域转化称透明
- 9.png 部分区域莫名变透明问题
- JAVA图片处理之黑色/白色透明化
- Swift - 去处图片的白色、黑色背景(使UIImage背景透明)
- 绘制TileMapRenderer后再绘制的图形变白色方块的问题
- 使用imagick将图片背景变透明
- Python使用matplotlib填充图形指定区域
- 白色边框透明加动画
- 黑白图像变白色部分
- Network monitoring with MRTG
- FLEX 实用属性详解
- 8.1.2 进程环境和属性
- 实例解析linux内核I2C体系结构(1)
- 下面是EntityManager的一些主要的接口要领
- 使用bitbltmasked去除图形白色区域,使之变透明(源代码)
- delphi如何做启动图片,就是如delphi启动时先加载一张图片
- Flex 重复加载图片对内存和性能的影响
- PSTN 公共交换电话网络
- All routing maps in a partition scheme must also be listed on a line in the configuration file.
- c语言的自动类型转换
- oracle中sql*plus命令大全
- 【Rugate】MVC1.0发布到IIS6的问题
- JavaScript 获取客户端计算机硬件及系统信息