本文整理汇总了C++中gdiplus::Graphics::MeasureString方法的典型用法代码示例。如果您正苦于以下问题:C++ Graphics::MeasureString方法的具体用法?C++ Graphics::MeasureString怎么用?C++ Graphics::MeasureString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gdiplus::Graphics
的用法示例。
在下文中一共展示了Graphics::MeasureString方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetCharacterSizes
//---------------------------------------------------------------------------
void GetCharacterSizes(Gdiplus::Font& font, Gdiplus::Graphics& charGraphics, FontAtlasSizeInfo* info /*OUT*/)
{
using namespace Gdiplus;
//
// Make a string comprising all characters we'll have in the font.
//
WCHAR allChars[s_NumChars + 1];
for ( WCHAR i = 0; i < s_NumChars; ++i )
{
allChars[i] = ( s_StartChar + i );
}
allChars[s_NumChars] = 0;
//
// Measure the entire character set.
//
RectF sizeRect;
charGraphics.MeasureString(allChars, s_NumChars, &font, PointF(0, 0), &sizeRect);
info->characterRowHeight = (int)(sizeRect.Height + 0.5f);
//
// The texture's width is fixed and already determined, so compute
// how many rows we'll need to place all of the characters on it,
// and how tall the texture will need to be.
//
int numRows = (int)(sizeRect.Width / info->atlasTextureWidth) + 1;
info->atlasTextureHeight = (int)(numRows*info->characterRowHeight) + 1;
//
// No use "drawing" a space character. Just remember how much of
// a horizontal shift is needed to represent a space on the screen.
//
{
WCHAR charString[2] = {' ', 0};
charGraphics.MeasureString(charString, 1, &font, PointF(0, 0), &sizeRect);
info->spaceCharacterWidth = (int)(sizeRect.Width + 0.5f);
}
//
// For the gap between characters, apply a factor to the size of
// a basic character width.
//
{
static const float kCharGapFactor = 0.10f; // portion of a space character
WCHAR charString[2] = {'x', 0};
charGraphics.MeasureString(charString, 1, &font, PointF(0, 0), &sizeRect);
info->gapBetweenChars = (int)(sizeRect.Width * kCharGapFactor );
}
}
示例2: MeasureString
void Graphics::MeasureString(const wchar_t* text,size_t length, const Font* font, const PointF& origin, RectF* boundingBox) {
Gdiplus::Graphics* g = reinterpret_cast<Gdiplus::Graphics*>(_private);
Gdiplus::Font* gdiFont = reinterpret_cast<Gdiplus::Font*>(font->_private);
Gdiplus::RectF gdiBound;
g->MeasureString(text, (int)length, gdiFont, ToGDIPoint<PointF, Gdiplus::PointF>(origin), &gdiBound);
*boundingBox = RectF(gdiBound.X, gdiBound.Y, gdiBound.Width, gdiBound.Height);
}
示例3: DrawTextMeasure
Gdiplus::RectF GdiplusUtilities::DrawTextMeasure(Gdiplus::Graphics& graphics, LPCTSTR lpchText, int cchText, const Gdiplus::Font& font)
{
Gdiplus::PointF p;
Gdiplus::RectF rc;
if (graphics.MeasureString(lpchText, cchText, &font, p, &rc))
{
}
return rc;
}
示例4: MeasureChars
void DxFont::MeasureChars(Gdiplus::Font & font, Gdiplus::Graphics & charGraphics)
{
WCHAR allChars[ NumChars + 1 ];
for( WCHAR i = 0; i < NumChars; ++i )
allChars[i] = StartChar + i;
allChars[ NumChars ] = 0;
Gdiplus::RectF sizeRect;
charGraphics.MeasureString( allChars, NumChars, &font, Gdiplus::PointF( 0, 0 ), &sizeRect );
CharHeight = static_cast<int>( sizeRect.Height + 0.5f );
int numRows = static_cast<int>( sizeRect.Width / TexWidth ) + 1;
TexHeight = static_cast<int>( numRows * CharHeight ) + 1;
WCHAR charString[ 2 ] = { ' ', 0 };
charGraphics.MeasureString( charString, 1, &font, Gdiplus::PointF( 0, 0 ), &sizeRect );
SpaceWidth = static_cast<int>( sizeRect.Width + 0.5f );
}
示例5: paint
void TextComponent::paint(Gdiplus::Graphics& graphics)
{
Gdiplus::SolidBrush brush(Gdiplus::Color(m_r, m_g, m_b));
Gdiplus::FontFamily fontFamily(L"Helvetica");
Gdiplus::Font font(&fontFamily, (Gdiplus::REAL) m_fontSize, Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);
Gdiplus::PointF pointF(m_x, m_y);
Gdiplus::RectF boundingBox;
graphics.MeasureString(m_text.c_str(), -1, &font, pointF, &boundingBox);
m_width = boundingBox.Width;
m_height = boundingBox.Height;
graphics.DrawString(m_text.c_str(), -1, &font, pointF, &brush);
}
示例6: text_size
void text_size(const char* str, Size* size)
{
size->w = 0;
size->h = 0;
st count = cl::StringUtil::char_to_wchar_count(str);
wchar* wstr = cl_alloc_type_with_count(wchar, count);
if(wstr == NULL) return;
cl::StringUtil::char_to_wchar(wstr, count, str);
Gdiplus::RectF limit(0, 0, 9999, 9999);
Gdiplus::RectF result;
graphics->MeasureString(wstr, -1, font, limit, &result);
cl_free(wstr);
size->set((st)result.Width, (st)result.Height);
}