UI库阶段性进展(增强图元功能)

      这两天整理了下texture图元的功能,发现在作为背景绘制的时候,在ui的继承体系中有着至关重要的作用:

       在wnd基类中,背景既可以是纯色的,也可以是纹理填充的,纹理作为背景的还需要支持单张图片或者多态图片又或者九宫格的背景再或者是多态的九宫格,另外纯色或者纹理的背景都还可以增加diffuse;

       时间原因,今天就先将texture实现到可以支持单张,多态,九宫格,以及多态的九宫格...

class IRenderTexture
{
public:
	/*
	*@brief 通过文件名来获取纹理
	*@param LPCTSTR pszFile 纹理的文件名 内部是从texture manager中的缓存中获取,如果没有texturemanager会自动加载并缓存起来
	*/
	virtual BOOL LoadTextureFromFile(LPCTSTR pszFile) = 0;
	/*
	*@brief 获取纹理的长宽
	*/
	virtual VOID GetTextureRealSize(SIZE &size) = 0;
	/*
	*@brief 通过指定相对原始图片尺寸的左上角和右下角来设置纹理坐标 (一般用于单一状态的九宫格图片设置9个格子的纹理坐标)
	*@param LPPOINT ptLT 选择纹理区域的左上角坐标
	*@param LPPOINT ptRB 选择纹理区域的右下角坐标
	*/
	virtual VOID SetTextureUVByAnchor(LPPOINT ptLT, LPPOINT ptRB) = 0;

	/*
	*@brief 通过比例来设定纹理坐标(一般用于多个状态图片设置纹理坐标)
	*@param UINT uNumerator 选取的纹理是划分后的第几份
	*@param UINT uDenominator 纹理划分成几份(必须是横向划分)
	*/
	virtual VOID SetTextureUVByRatio( UINT uNumerator, UINT uDenominator ) = 0;

	/*
	*@brief 通过比例和相对单一态的图片尺寸的左上角和右下角来设定纹理坐标(一般用于多个状态图片设置9个格子的纹理坐标)
	*@param UINT uNumerator 选取的纹理是划分后的第几份
	*@param UINT uDenominator 纹理划分成几份(必须是横向划分)
	*@param LPPOINT ptLT 选择纹理区域的左上角坐标
	*@param LPPOINT ptRB 选择纹理区域的右下角坐标
	*/
	virtual VOID SetTextureUVByRatio_Anchor(UINT uNumerator, UINT uDenominator, LPPOINT ptLT, LPPOINT ptRB) = 0;
};

  

原文地址:https://www.cnblogs.com/dwjaissk/p/2812278.html