fontsandtexteffectscontainer.cpp

来自「最新官方例子,图形,描述副,基本控件,通讯协议,等等,」· C++ 代码 · 共 154 行

CPP
154
字号
/**
 * 
 * @brief Definition of CFontsAndTextEffectsContainer
 *
 * Copyright (c) EMCC Software Ltd 2003
 * @version 1.0
 */

// INCLUDE FILES

// Class includes
#include "FontsAndTextEffectsContainer.h"

// System includes
#include <eikenv.h>			// CEikonEnv iEikonEnv and AKN_LAF_COLOR
#include <fontsandtext.rsg>	// R_FONTSANDTEXT_LOCALIZATION_TEXT
#include <StringLoader.h>	// StringLoader

// CONSTANTS
const TInt KTextMaxLength = 50;
const TInt KLeftTextHorizAlign = 10;
const TInt KLeftTextVertAlign = 7;
const TReal KRightTextHorizAlign = 0.95;
const TReal KRightTextVertAlign =  0.9;
const TInt KMiddleTextOneHorizAlign = 4;
const TInt KMiddleTextOneVertAlign = 3;
const TInt KMiddleTextTwoVertAlign = 2;
const TReal KMiddleTextThreeVertAlign = 1.5;

const TInt KColorBlue = 210;
const TInt KColorRed = 35;
const TInt KColorGreen = 185;


// ================= MEMBER FUNCTIONS =======================

/**
 * Symbian OS 2 phase constructor.
 * Constructs the CFontsAndTextEffectsContainer using the NewLC method, popping
 * the constructed object from the CleanupStack before returning it.
 * 
 * @param aRect The rectangle for this window
 * @return The newly constructed CFontsAndTextEffectsContainer
 */
CFontsAndTextEffectsContainer* CFontsAndTextEffectsContainer::NewL(const TRect& aRect)
	{
	CFontsAndTextEffectsContainer* self = CFontsAndTextEffectsContainer::NewLC(aRect);
	CleanupStack::Pop(self);
	return self;
	}

/**
 * Symbian OS 2 phase constructor.
 * Constructs the CFontsAndTextEffectsContainer using the constructor and ConstructL 
 * method, leaving the constructed object on the CleanupStack before returning it.
 * 
 * @param aRect The rectangle for this window
 * @return The newly constructed CFontsAndTextEffectsContainer
 */
CFontsAndTextEffectsContainer* CFontsAndTextEffectsContainer::NewLC(const TRect& aRect)
	{
	CFontsAndTextEffectsContainer* self = new (ELeave) CFontsAndTextEffectsContainer();
	CleanupStack::PushL(self);
	self->ConstructL(aRect);
	return self;
	}

/**
 * Symbian OS 2nd phase constructor.  Creates a Window for the control to draw to.
 * Activates the control
 * @param aRect The rectangle for this window
 */ 
void CFontsAndTextEffectsContainer::ConstructL(const TRect& aRect)
	{
	CreateWindowL();
	SetRect(aRect);
	ActivateL();
	}

/**
 * Destructor.
 */
CFontsAndTextEffectsContainer::~CFontsAndTextEffectsContainer()
	{    
	}

/**
 * This draw function illustrates many of the effects that can be applied
 * to text when drawing it. Examples include underlining, strikethrough and vertically
 * oriented text.
 *
 * @param aRect The rectangular area to be drawn to
 */
void CFontsAndTextEffectsContainer::Draw(const TRect& aRect) const
	{
	// Clear the graphics context.
	CWindowGc& gc = SystemGc();
	gc.Clear();    

	// Setup some colours.
	TRgb colorBlue = AKN_LAF_COLOR(KColorBlue);
	TRgb colorRed = AKN_LAF_COLOR(KColorRed);
	TRgb colorGreen = AKN_LAF_COLOR(KColorGreen);

	// Use resource architecture to obtain localizable string
	TBuf<KTextMaxLength> text;
	StringLoader::Load(text, R_FONTSANDTEXT_LOCALIZATION_TEXT);
	
	// Draw black vertical text in title font.
	const CFont* font = iEikonEnv->TitleFont();
	TPoint textPoint(aRect.Width() / KLeftTextHorizAlign, aRect.Height() / KLeftTextVertAlign);
	gc.UseFont(font);
	gc.SetPenColor(KRgbBlack);
	gc.DrawTextVertical(text, textPoint, EFalse);
	gc.DiscardFont();
	
	// Draw black vertical text in annotation font.
	font = iEikonEnv->AnnotationFont();
	textPoint.SetXY((TInt)(aRect.Width() * KRightTextHorizAlign), (TInt)(aRect.Height() * KRightTextVertAlign));
	gc.UseFont(font);
	gc.DrawTextVertical(text, textPoint, ETrue);
	gc.DiscardFont();
	
	// Draw green strikethrough text in symbol font
	font = iEikonEnv->SymbolFont();
	textPoint.SetXY(aRect.Width() / KMiddleTextOneHorizAlign, aRect.Height() / KMiddleTextOneVertAlign);
	gc.UseFont(font);
	gc.SetPenColor(colorGreen);
	gc.SetStrikethroughStyle(EStrikethroughOn);
	gc.DrawText(text, textPoint);
	gc.SetStrikethroughStyle(EStrikethroughOff);
	gc.DiscardFont();

	// Draw blue underlined text in legend font
	font = iEikonEnv->LegendFont();
	textPoint.iY = (aRect.Height() / KMiddleTextTwoVertAlign);
	gc.UseFont(font);
	gc.SetPenColor(colorBlue);
	gc.SetUnderlineStyle(EUnderlineOn);
	gc.DrawText(text, textPoint);
	gc.SetUnderlineStyle(EUnderlineOff);
	gc.DiscardFont();

	// Draw red text in dense font.
	font = iEikonEnv->DenseFont();
	textPoint.iY = (TInt)(aRect.Height() / KMiddleTextThreeVertAlign);
	gc.UseFont(font);
	gc.SetPenColor(colorRed);
	gc.DrawText(text, textPoint);	
	gc.DiscardFont();
	}

// End of File  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?