亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? asl_bitmap.h

?? 泡泡堂單機版(含ASL游戲引擎源碼 泡泡堂單機版(含ASL游戲引擎源碼
?? H
字號:
//-----------------------------------------------------------------------------
//
//    ____ Azure Star Game Engine 藍星游戲引擎 ____
//
//    Copyright (c) 2006, 藍星工作室
//    All rights reserved.
//
//    文件名稱: asl_bitmap.h
//    摘    要: 位圖類定義
//
//    當前版本: 1.0
//    作    者: 湯  祺
//    創建日期: 2006-7-15
//
//-----------------------------------------------------------------------------

#ifndef ASL_BITMAP_INCLUDE
#define ASL_BITMAP_INCLUDE

#pragma once
#pragma comment(lib, "msimg32.lib")

#include "asl_utils.h"
#include "asl_file.h"

//-----------------------------------------------------------------------------
namespace ASL
{

//-----------------------------------------------------------------------------
// 16位顏色值 COLOR 類型定義及相關函數
//-----------------------------------------------------------------------------

// COLOR定義	
typedef WORD COLOR;

// 常用值
const COLOR clRed		= 0xF800;	// 紅色
const COLOR clGreen		= 0x07E0;	// 綠色
const COLOR clBlue		= 0x001F;	// 藍色
const COLOR clYellow	= 0xFFE0;	// 黃色
const COLOR clFuchsia	= 0xF81F;	// 紫色
const COLOR clAqua		= 0x07FF;	// 青色
const COLOR clBlack		= 0x0000;	// 黑色
const COLOR clWhite		= 0xFFFF;	// 白色

// 將紅,綠,藍三分量轉換為COLOR
inline COLOR RGB16(int r, int g, int b)
{
	return COLOR((b & 0xF8) >> 3 | (g & 0xFC) << 3 | (r & 0xF8) << 8);
}

// 將32位GDI顏色值轉換為COLOR
inline COLOR RGB16(COLORREF c)
{
	return COLOR( (c << 8 & 0xF800) | (c >> 5 & 0x7E0) | (c >> 19 & 0x1F) );
}

// 取紅色分量
inline BYTE GetRed(COLOR rgb16)
{
	return (rgb16 & 0xF800) >> 8;
}

// 取綠色分量
inline BYTE GetGreen(COLOR rgb16)
{
	return (rgb16 & 0x07E0) >> 3;
}

// 取藍色分量
inline BYTE GetBlue(COLOR rgb16)
{
	return (rgb16 & 0x001F) << 3;
}

// 將COLOR轉換為32位GDI顏色值
inline COLORREF GetRGB32(COLOR rgb16)
{
	return RGB(GetRed(rgb16), GetGreen(rgb16), GetBlue(rgb16));
}

// 常量矩形, 用于繪圖函數的默認值, 代表使用整個位圖
const RECT DEFAULTRECT = { 0, 0, 0, 0 };



//-----------------------------------------------------------------------------
// 類名: ASLBitmap
// 功能: 位圖類
//       本類與GDI的HBITMAP兼容,是一個在內存中保存的16位設備無關位圖可以使用
//       幾乎所有的GDI函數進行繪圖操作。對于各種常用的繪圖操作函數均使用MMX
//       指令進行了優化。本類完全通過CPU對內存進行操作,與DirectX完全無關。可
//       以通過派生類ASLCanvas使用DirectDraw,實現全屏顯示。
//-----------------------------------------------------------------------------
class ASLBitmap
{

// 構造、析構函數
public:	
	ASLBitmap(void);
	~ASLBitmap(void);

// 禁用拷貝構造函數和賦值函數, 無實現
private:	
	ASLBitmap(const ASLBitmap &);
	ASLBitmap& operator=(const ASLBitmap &);


	
// 重要操作
public:
	// 創建空白位圖
	void CreateBlank(int nWidth, int nHeight) throw(ASLSimpleException);
	
	// 從bmp格式的文件加載位圖
	void LoadBMP(ASLFile *pFile) throw(ASLFileException);
	
	// 銷毀位圖
	void Destroy(void);	
	
	// 將位圖保存為bmp格式的圖片
	void SaveToFile(LPCSTR szFileName) const throw(ASLFileException);

	// 將位圖繪制到窗口上
	void BlitToWnd(HWND hwnd, int xDest = 0, int yDest = 0, 
				   const RECT &rcSrc = DEFAULTRECT) const;
	
	// 將位圖繪制到內存段中
	void BlitToMem565(BYTE *pMem, int nPitch) const;
	void BlitToMem555(BYTE *pMem, int nPitch) const;
	
	// 設置位圖的拆分塊
	void SetBlock(int numX, int numY);



// 屬性操作
public:
	// 是否有nAlpha通道
	inline bool IsAlphaChannel(void) { return (m_pAlpha != NULL); }

	// 設置透明色
	inline void SetColorKey(COLOR cl){ m_nColorKey = GetRGB32(cl); }
	inline void SetColorKey(void)
	{ ASSERT(m_pData != NULL); SetColorKey(m_pData[0]); }
	
	// 取透明色
	inline int GetColorKey(void) const{ return m_nColorKey; }
	
	// 設置指定像素的顏色
	inline void SetPixel(int x, int y, COLOR cl)
	{ ASSERT(m_pData != NULL); m_pData[y * m_nPitch/2 + x] = cl; }
	
	// 取指定像素的顏色
	inline COLOR GetPixel(int x, int y) const 
	{ ASSERT(m_pData != NULL);  return m_pData[y * m_nPitch/2 + x]; }

	// 設置熱點
	inline void SetHotspot(POINT pt) { m_ptHot = pt; }
	
	// 取HDC
	inline HDC GetDC(void) const { return m_hDC; }
	
	// 取HBITMAP
	inline HBITMAP GetHandle(void) const { return m_hBitmap; }
	
	// 取位圖寬度
	inline int GetWidth(void) const { return m_nWidth; }
	
	// 取位圖高度
	inline int GetHeight(void) const { return m_nHeight; }
	
	// 取位圖單行所占字節數
	inline int GetPitch(void) const { return m_nPitch; }

	// 取位圖數據
	inline COLOR* GetData(void) { return m_pData; }
	inline const COLOR* GetData(void) const { return m_pData; }



// 雙目繪圖函數(將本位圖繪制到另一個位圖)
public:
	// 以普通方式將位圖繪制到目的位圖	
	void Draw(ASLBitmap &bmDest, int xDest, int yDest, 
			  int nSeq) const;
	void Draw(ASLBitmap &bmDest, int xDest, int yDest, 
			  int row, int col) const;
	void Draw(ASLBitmap &bmDest, int xDest, int yDest, 
			  const RECT &rcSrc = DEFAULTRECT) const;
	
	// 以半透明方式將位圖繪制到目的位圖	
	void DrawAlpha(ASLBitmap &bmDest, int xDest, int yDest, int nAlpha, 
				   int nSeq) const;
	void DrawAlpha(ASLBitmap &bmDest, int xDest, int yDest, int nAlpha, 
				   int row, int col) const;	
	void DrawAlpha(ASLBitmap &bmDest, int xDest, int yDest, int nAlpha, 
				   const RECT &rcSrc = DEFAULTRECT) const;

	// 以快速半透明方式將位圖繪制到目的位圖(50% - 50%)	
	void DrawAlphaFast(ASLBitmap &bmDest, int xDest, int yDest,
					   int nSeq) const;
	void DrawAlphaFast(ASLBitmap &bmDest, int xDest, int yDest,
					   int row, int col) const;
	void DrawAlphaFast(ASLBitmap &bmDest, int xDest, int yDest, 
					   const RECT &rcSrc = DEFAULTRECT) const;

	// 以nAlpha通道方式將位圖繪制到目的位圖
	void DrawAlphaChannel(ASLBitmap &bmDest, int xDest, int yDest,
						  int nSeq) const;
	void DrawAlphaChannel(ASLBitmap &bmDest, int xDest, int yDest,
						  int row, int col) const;
	void DrawAlphaChannel(ASLBitmap &bmDest, int xDest, int yDest,
						  const RECT &rcSrc = DEFAULTRECT) const;
	
	// 以色飽和方式將位圖繪制到目的位圖	
	void DrawAdditive(ASLBitmap &bmDest, int xDest, int yDest, 
					  int nSeq) const;
	void DrawAdditive(ASLBitmap &bmDest, int xDest, int yDest, 
					  int row, int col) const;
	void DrawAdditive(ASLBitmap &bmDest, int xDest, int yDest, 
					  const RECT &rcSrc = DEFAULTRECT) const;

	// 將位圖縮放繪制到目的位圖	
	void DrawStretch(ASLBitmap &bmDest, int xDest, int yDest, double xScale, 
					 double yScale, int nSeq) const;
	void DrawStretch(ASLBitmap &bmDest, int xDest, int yDest, double xScale, 
					 double yScale, int row, int col) const;
	void DrawStretch(ASLBitmap &bmDest, int xDest, int yDest, double xScale, 
					 double yScale, const RECT &rcSrc = DEFAULTRECT) const;

	// 將位圖旋轉繪制到目的位圖	
	void DrawRotate(ASLBitmap &bmDest, int xDest, int yDest, double angle, 
					int nSeq) const;
	void DrawRotate(ASLBitmap &bmDest, int xDest, int yDest, double angle, 
					int row, int col) const;
	void DrawRotate(ASLBitmap &bmDest, int xDest, int yDest, double angle, 
					const RECT &rcSrc = DEFAULTRECT) const;



// 單目繪圖函數(修改位圖本身)
public:
	// 以指定顏色清空位圖
	void Clear(COLOR cl);
	
	// 輸出文字
	void TextOut(COLOR cl, int x, int y, LPCSTR format, ...);
	void TextOut(HFONT font, COLOR cl, int x, int y, LPCSTR format, ...);	

	// 繪制直線
	void Line(COLOR cl, int x1, int y1, int x2, int y2, int size = 1);

	// 以半透明方式繪制直線
	void LineAlpha(COLOR cl, int x1, int y1, int x2, int y2, int nAlpha, 
		int size = 1);

	// 繪制矩形(僅邊框)
	void Rect(COLOR cl, int x1, int y1, int x2, int y2, int size = 1);

	// 填充矩形
	void FillRect(COLOR cl, int x1, int y1, int x2, int y2);

	// 繪制橢圓(僅邊框)
	void Ellipse(COLOR cl, int x1, int y1, int x2, int y2, int size = 1);

	// 填充橢圓
	void FillEllipse(COLOR cl, int x1, int y1, int x2, int y2);

	// 濾鏡效果
	void Filter(COLOR cl);

	// 將位圖灰度化
	void ConvertGray(void);

	// 將位圖與指定顏色按比例混合(可實現淡入淡出)
	void Mix(COLOR cl, int nAlpha, const RECT &rc = DEFAULTRECT);



//私有函數
private:	
	// 調整繪圖位置
	bool _AdjustDrawPos(const ASLBitmap &bmDest, int &xDest, int &yDest, 
						RECT &rcSrc) const;
	
	// 用本位圖的大小裁剪矩形
	bool _Clip(RECT &rect) const;



//成員變量
protected:
	HBITMAP	m_hBitmap;			// 位圖句柄
	HDC		m_hDC;				// 設備句柄
	int		m_nWidth;			// 位圖寬度
	int		m_nHeight;			// 位圖高度
	int		m_nPitch;			// 位圖每行字節數
	int		m_nBlockW;			// 單塊位圖寬度
	int		m_nBlockH;			// 單塊位圖高度
	int		m_nBlockX;			// 位圖分塊列數
	int		m_nBlockY;			// 位圖分塊行數
	int		m_nColorKey;		// 顏色鍵
	RECT	m_rcClip;			// 位圖裁剪矩形
	POINT	m_ptHot;			// 位圖熱點
	COLOR*	m_pData;			// 位圖數據指針
	BYTE*	m_pAlpha;			// nAlpha通道

}; // ASLBitmap類定義結束

} // namespace ASL

#endif // ASL_BITMAP_INCLUDE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区免费在线观看视频| 天天做天天摸天天爽国产一区| 亚洲欧美aⅴ...| 精品一区二区久久久| 91蝌蚪porny| 久久久久9999亚洲精品| 日韩**一区毛片| 色又黄又爽网站www久久| 亚洲bt欧美bt精品| 国产suv精品一区二区883| 91麻豆精品国产91久久久| 亚洲色图欧美偷拍| 北条麻妃一区二区三区| 精品黑人一区二区三区久久 | 国产日韩欧美高清| 麻豆精品在线播放| 欧美日韩国产精品自在自线| 亚洲日本在线a| 99久久99久久免费精品蜜臀| 久久精品日产第一区二区三区高清版 | av男人天堂一区| 国产亚洲欧美中文| 国产精品综合网| 欧美精品一区二区在线播放| 久久草av在线| 精品国产伦一区二区三区免费| 首页欧美精品中文字幕| 欧美日韩国产美女| 性久久久久久久久久久久| 欧美三片在线视频观看| 亚洲国产欧美在线人成| 在线看一区二区| 亚洲一区中文日韩| 精品视频一区二区不卡| 天堂影院一区二区| 91精品国产福利| 久久精品国产精品青草| 日韩精品一区二区三区老鸭窝| 麻豆精品新av中文字幕| 久久综合av免费| 高清av一区二区| 中文字幕日本不卡| 欧美艳星brazzers| 日本在线播放一区二区三区| 欧美成人精品3d动漫h| 狠狠色伊人亚洲综合成人| 久久理论电影网| 91在线码无精品| 亚洲一级电影视频| 日韩一区二区免费在线电影| 国产精品一二一区| 亚洲日本在线a| 欧美精品免费视频| 国产一区在线观看麻豆| 最新欧美精品一区二区三区| 欧美在线不卡视频| 久久精品二区亚洲w码| 天堂va蜜桃一区二区三区| 日韩视频一区二区三区| 成人综合婷婷国产精品久久免费| 1区2区3区精品视频| 欧美久久久久久久久中文字幕| 九一久久久久久| 亚洲色图在线看| 欧美一级专区免费大片| 成人一区二区三区视频在线观看| 一区二区三区四区五区视频在线观看| 欧美一二三四区在线| 99久久精品国产毛片| 婷婷激情综合网| 日本一区二区成人| 欧美美女视频在线观看| 国产盗摄女厕一区二区三区 | 日韩精品一级二级| 国产日产精品一区| 欧美专区在线观看一区| 成人性生交大合| 裸体歌舞表演一区二区| 一区二区三区在线观看视频| 精品盗摄一区二区三区| 欧美视频中文一区二区三区在线观看| 国产一区二区导航在线播放| 亚洲国产日韩a在线播放性色| 久久久噜噜噜久久中文字幕色伊伊| av午夜精品一区二区三区| 九九精品视频在线看| 亚洲国产日韩a在线播放性色| 亚洲国产精品ⅴa在线观看| 日韩视频在线你懂得| 在线视频观看一区| www.亚洲人| 粉嫩一区二区三区在线看| 麻豆一区二区三区| 日韩中文字幕91| 亚洲综合成人网| 亚洲欧美在线另类| 欧美国产在线观看| 久久久久免费观看| 欧美一区三区四区| 91精品久久久久久蜜臀| 色嗨嗨av一区二区三区| 波多野结衣亚洲| 粉嫩一区二区三区性色av| 国产自产2019最新不卡| 久久不见久久见免费视频7| 日韩国产在线观看| 午夜电影网亚洲视频| 亚洲一区二区偷拍精品| 亚洲精选一二三| 亚洲黄一区二区三区| 亚洲精品国久久99热| 亚洲人一二三区| 亚洲人成在线播放网站岛国| 中文字幕一区二区在线播放| 中文字幕一区二区不卡| 专区另类欧美日韩| 一区二区三区国产精华| 亚洲一区二区综合| 午夜欧美一区二区三区在线播放| 五月激情六月综合| 日本欧美在线看| 91麻豆产精品久久久久久| 色8久久精品久久久久久蜜| 一本色道久久综合亚洲精品按摩| 色噜噜狠狠一区二区三区果冻| 色噜噜夜夜夜综合网| 欧美日本免费一区二区三区| 91精品婷婷国产综合久久性色| 3d动漫精品啪啪1区2区免费| 日韩欧美123| 中文字幕乱码亚洲精品一区| 亚洲激情图片一区| 性久久久久久久久久久久| 久久国产精品色婷婷| 国产aⅴ精品一区二区三区色成熟| 国产精品一区二区久激情瑜伽| 懂色av一区二区夜夜嗨| 欧洲一区二区三区免费视频| 欧美一区二区三级| 国产欧美一区二区精品性| 亚洲美女偷拍久久| 奇米色777欧美一区二区| 国产精品正在播放| 91行情网站电视在线观看高清版| 欧美电影一区二区| 久久精品视频网| 亚洲香肠在线观看| 国产一本一道久久香蕉| 色哟哟一区二区在线观看| 91精品国产色综合久久不卡电影 | 成人91在线观看| 欧美人妖巨大在线| 国产精品免费免费| 视频一区二区中文字幕| 成人免费观看av| 欧美一区二区高清| 亚洲另类春色校园小说| 国模一区二区三区白浆| 欧美最猛性xxxxx直播| 国产亚洲一本大道中文在线| 天天色天天操综合| 成人激情小说网站| 精品久久久久久久久久久久包黑料 | 亚洲电影一区二区| 国产成人av电影在线| 7777精品伊人久久久大香线蕉完整版| 国产精品色呦呦| 美洲天堂一区二卡三卡四卡视频| 94色蜜桃网一区二区三区| 精品久久国产老人久久综合| 亚洲午夜久久久久中文字幕久| 国产成人自拍在线| 精品久久久久99| 日韩精品一二三区| 欧美性大战久久| 国产精品久久久久久福利一牛影视| 蜜臀91精品一区二区三区| 欧美午夜寂寞影院| 日韩美女视频一区| 成人ar影院免费观看视频| 精品国产成人系列| 日韩vs国产vs欧美| 欧美日韩国产高清一区二区| 亚洲免费观看高清完整版在线| 岛国精品在线播放| 日本一区二区三区电影| 国产精品主播直播| 久久亚洲精品国产精品紫薇 | 国产剧情在线观看一区二区| 欧美一区二区视频在线观看| 亚洲h在线观看| 欧美日韩精品一二三区| 亚洲国产精品久久一线不卡| 色婷婷亚洲婷婷| 亚洲精品videosex极品| 色偷偷成人一区二区三区91| 亚洲男人的天堂在线观看| 91视频观看免费| 亚洲色图清纯唯美| 欧美色手机在线观看|