本文整理汇总了C++中Canvas::DrawFormattedText方法的典型用法代码示例。如果您正苦于以下问题:C++ Canvas::DrawFormattedText方法的具体用法?C++ Canvas::DrawFormattedText怎么用?C++ Canvas::DrawFormattedText使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Canvas
的用法示例。
在下文中一共展示了Canvas::DrawFormattedText方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pen
void
ButtonWindow::OnPaint(Canvas &canvas)
{
const bool focused = HasCursorKeys() ? HasFocus() : down;
if (focused) {
Pen pen(Layout::Scale(1), COLOR_BLACK);
canvas.Select(pen);
canvas.SelectHollowBrush();
canvas.Rectangle(-1, -1, canvas.GetWidth(), canvas.GetHeight());
}
PixelRect rc(2, 2, canvas.GetWidth() - 4, canvas.GetHeight() - 4);
if (down) {
rc.left += Layout::FastScale(1);
rc.top += Layout::FastScale(1);
}
canvas.DrawButton(GetClientRect(), down);
canvas.SetTextColor(IsEnabled()
? (IsDithered() && down ? COLOR_WHITE : COLOR_BLACK)
: COLOR_GRAY);
canvas.SetBackgroundTransparent();
unsigned style = GetTextStyle();
if (IsDithered())
style |= DT_UNDERLINE;
canvas.DrawFormattedText(&rc, text.c_str(), style);
}
示例2: rc
void
LargeTextWindow::OnPaint(Canvas &canvas)
{
canvas.ClearWhite();
PixelRect rc(0, 0, canvas.GetWidth() - 1, canvas.GetHeight() - 1);
canvas.DrawOutlineRectangle(rc.left, rc.top, rc.right, rc.bottom,
COLOR_BLACK);
if (value.empty())
return;
const PixelScalar padding = Layout::GetTextPadding();
rc.Grow(-padding);
canvas.SetBackgroundTransparent();
canvas.SetTextColor(COLOR_BLACK);
rc.top -= origin * GetFont().GetHeight();
#ifndef USE_GDI
canvas.Select(GetFont());
#endif
canvas.DrawFormattedText(&rc, value.c_str(), DT_LEFT | DT_WORDBREAK);
}
示例3: if
void
WndButton::OnPaint(Canvas &canvas)
{
const bool pressed = IsDown();
const bool focused = HasCursorKeys() ? HasFocus() : pressed;
PixelRect rc = canvas.GetRect();
renderer.DrawButton(canvas, rc, focused, pressed);
// If button has text on it
const tstring caption = GetText();
if (caption.empty())
return;
rc = renderer.GetDrawingRect(rc, pressed);
canvas.SetBackgroundTransparent();
if (!IsEnabled())
canvas.SetTextColor(look.button.disabled.color);
else if (focused)
canvas.SetTextColor(look.button.focused.foreground_color);
else
canvas.SetTextColor(look.button.standard.foreground_color);
canvas.Select(*(look.button.font));
#ifndef USE_GDI
canvas.DrawFormattedText(&rc, caption.c_str(), GetTextStyle());
#else
unsigned style = DT_CENTER | DT_NOCLIP | DT_WORDBREAK;
PixelRect text_rc = rc;
canvas.DrawFormattedText(&text_rc, caption.c_str(), style | DT_CALCRECT);
text_rc.right = rc.right;
PixelScalar offset = rc.bottom - text_rc.bottom;
if (offset > 0) {
offset /= 2;
text_rc.top += offset;
text_rc.bottom += offset;
}
canvas.DrawFormattedText(&text_rc, caption.c_str(), style);
#endif
}
示例4:
void
TabDisplay::PaintButton(Canvas &canvas, unsigned CaptionStyle,
const TCHAR *caption, const PixelRect &rc,
const Bitmap *bmp, const bool isDown, bool inverse)
{
PixelRect rcTextFinal = rc;
const UPixelScalar buttonheight = rc.bottom - rc.top;
const PixelSize text_size = canvas.CalcTextSize(caption);
const int textwidth = text_size.cx;
const int textheight = text_size.cy;
UPixelScalar textheightoffset = 0;
if (textwidth > (rc.right - rc.left)) // assume 2 lines
textheightoffset = std::max(0, (int)(buttonheight - textheight * 2) / 2);
else
textheightoffset = std::max(0, (int)(buttonheight - textheight) / 2);
rcTextFinal.top += textheightoffset;
canvas.DrawFilledRectangle(rc, canvas.GetBackgroundColor());
if (bmp != NULL) {
const PixelSize bitmap_size = bmp->GetSize();
const int offsetx = (rc.right - rc.left - bitmap_size.cx / 2) / 2;
const int offsety = (rc.bottom - rc.top - bitmap_size.cy) / 2;
if (inverse) // black background
canvas.CopyNotOr(rc.left + offsetx,
rc.top + offsety,
bitmap_size.cx / 2,
bitmap_size.cy,
*bmp,
bitmap_size.cx / 2, 0);
else
canvas.CopyAnd(rc.left + offsetx,
rc.top + offsety,
bitmap_size.cx / 2,
bitmap_size.cy,
*bmp,
bitmap_size.cx / 2, 0);
} else {
#ifndef USE_GDI
if (IsDithered())
CaptionStyle |= DT_UNDERLINE;
#endif
canvas.DrawFormattedText(&rcTextFinal, caption, CaptionStyle);
}
}
示例5: scope
void
TabDisplay::PaintButton(Canvas &canvas, unsigned CaptionStyle,
const TCHAR *caption, const PixelRect &rc,
const Bitmap *bmp, const bool isDown, bool inverse)
{
PixelRect rcTextFinal = rc;
const UPixelScalar buttonheight = rc.bottom - rc.top;
const PixelSize text_size = canvas.CalcTextSize(caption);
const int textwidth = text_size.cx;
const int textheight = text_size.cy;
UPixelScalar textheightoffset = 0;
if (textwidth > (rc.right - rc.left)) // assume 2 lines
textheightoffset = std::max(0, (int)(buttonheight - textheight * 2) / 2);
else
textheightoffset = std::max(0, (int)(buttonheight - textheight) / 2);
rcTextFinal.top += textheightoffset;
canvas.DrawFilledRectangle(rc, canvas.GetBackgroundColor());
if (bmp != nullptr) {
const PixelSize bitmap_size = bmp->GetSize();
const int offsetx = (rc.right - rc.left - bitmap_size.cx / 2) / 2;
const int offsety = (rc.bottom - rc.top - bitmap_size.cy) / 2;
#ifdef ENABLE_OPENGL
if (inverse) {
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
/* invert the texture color */
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE);
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_ONE_MINUS_SRC_COLOR);
/* copy the texture alpha */
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE);
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
} else
/* simple copy */
OpenGL::glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
const GLEnable scope(GL_TEXTURE_2D);
const GLBlend blend(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GLTexture &texture = *bmp->GetNative();
texture.Bind();
texture.Draw(rc.left + offsetx, rc.top + offsety);
#else
if (inverse) // black background
canvas.CopyNotOr(rc.left + offsetx,
rc.top + offsety,
bitmap_size.cx / 2,
bitmap_size.cy,
*bmp,
bitmap_size.cx / 2, 0);
else
canvas.CopyAnd(rc.left + offsetx,
rc.top + offsety,
bitmap_size.cx / 2,
bitmap_size.cy,
*bmp,
bitmap_size.cx / 2, 0);
#endif
} else {
#ifndef USE_GDI
if (IsDithered())
CaptionStyle |= DT_UNDERLINE;
#endif
canvas.DrawFormattedText(&rcTextFinal, caption, CaptionStyle);
}
}