本文整理汇总了C++中gdiplus::Graphics::DrawString方法的典型用法代码示例。如果您正苦于以下问题:C++ Graphics::DrawString方法的具体用法?C++ Graphics::DrawString怎么用?C++ Graphics::DrawString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gdiplus::Graphics
的用法示例。
在下文中一共展示了Graphics::DrawString方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawTitleText
void CStartupView::DrawTitleText(Gdiplus::Graphics &graphics)
{
Gdiplus::Rect gdipRcLeftButtons;
CalculateLeftButtonsRegion(gdipRcLeftButtons);
Gdiplus::SolidBrush blackBrush(Gdiplus::Color(255, 0, 0, 0));
Gdiplus::Font titleFont(m_csFontFamily, m_iTitleFontSize,
Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
Gdiplus::Font subTitleFont(m_csFontFamily, m_iNormalFontSize,
Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
CString csRecord1;
csRecord1.LoadString(IDS_RECORD);
INT x = gdipRcLeftButtons.X;
INT y = gdipRcLeftButtons.Y + 2*BUTTON_TITLE_HEIGHT;
Gdiplus::PointF textOrigin(x/*gdipRcLeftButtons.X*/, y/*(gdipRcLeftButtons.Y + gdipRcLeftButtons.Height)*/ );
graphics.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAliasGridFit);
graphics.DrawString(csRecord1, csRecord1.GetLength(), &titleFont, textOrigin, &blackBrush);
x = gdipRcLeftButtons.X;
y = gdipRcLeftButtons.Y + BUTTON_TITLE_HEIGHT + 2*BUTTON_SUBTITLE_HEIGHT + 2*(BUTTON_HEIGHT1 + 10) + SEPARATOR_HEIGHT + 5;
//Gdiplus::PointF textOrigin(x/*gdipRcLeftButtons.X*/, y/*(gdipRcLeftButtons.Y + gdipRcLeftButtons.Height)*/ );
textOrigin.X = x;
textOrigin.Y = y;
CString csWelcome;
//csWelcome.LoadStringW(IDS_WELCOME);
csWelcome.LoadStringW(ID_MENU_NEW);
graphics.DrawString(csWelcome, csWelcome.GetLength(), &titleFont, textOrigin, &blackBrush);
textOrigin.Y += BUTTON_TITLE_HEIGHT;
Gdiplus::Rect gdipRcRightButtons;
CalculateRightButtonsRegion(gdipRcRightButtons);
textOrigin.X = gdipRcRightButtons.X ;
textOrigin.Y = gdipRcRightButtons.Y + BUTTON_TITLE_HEIGHT + BUTTON_HEIGHT;;
CString csRecord;
//csRecord.LoadStringW(IDS_RECORD);
csRecord.LoadStringW(ID_MENU_OPEN);
graphics.DrawString(csRecord, csRecord.GetLength(), &titleFont, textOrigin, &blackBrush);
/*textOrigin.X = gdipRcRightButtons.X ;
textOrigin.Y += 3*BUTTON_HEIGHT;
CString csRecent;
csRecent.LoadStringW(IDS_RECENTLY_OPENED_PROJECTS);
graphics.DrawString(csRecent, csRecent.GetLength(), &titleFont, textOrigin, &blackBrush); */
}
示例2: BuildFontSheetBitmap
void DxFont::BuildFontSheetBitmap(Gdiplus::Font & font, Gdiplus::Graphics & charGraphics, Gdiplus::Bitmap & charBitmap, Gdiplus::Graphics & fontSheetGraphics)
{
WCHAR charString[ 2 ] = { ' ', 0 };
Gdiplus::SolidBrush whiteBrush( Gdiplus::Color( 255, 255, 255, 255 ) );
UINT fontSheetX = 0;
UINT fontSheetY = 0;
for( UINT i = 0; i < NumChars; ++i )
{
charString[ 0 ] = static_cast<WCHAR>(StartChar + i);
charGraphics.Clear(Gdiplus::Color(0, 0, 0, 0));
charGraphics.DrawString(charString, 1, &font, Gdiplus::PointF(0.0f, 0.0f), &whiteBrush);
int minX = GetCharMinX(charBitmap);
int maxX = GetCharMaxX(charBitmap);
int charWidth = maxX - minX + 1;
if(fontSheetX + charWidth >= TexWidth)
{
fontSheetX = 0;
fontSheetY += static_cast<int>(CharHeight) + 1;
}
CharRects[i] = CD3D11_RECT(fontSheetX, fontSheetY, fontSheetX + charWidth, fontSheetY + CharHeight);
fontSheetGraphics.DrawImage(&charBitmap, fontSheetX, fontSheetY, minX, 0, charWidth, CharHeight, Gdiplus::UnitPixel);
fontSheetX += charWidth + 1;
}
}
示例3: DrawButton
// 绘制按钮
void CDUIButton::DrawButton( Gdiplus::Graphics& graphics)
{
// 获取按钮图片信息
UINT iCount = m_nImageCount;
int iButtonIndex = 0;
if(m_bDisabled && iCount >= 4) iButtonIndex = 3;
else if(m_bPressed && iCount >= 3)iButtonIndex = 2;
else if(m_bHovering && iCount >= 2)iButtonIndex = 1;
else iButtonIndex = 0;
// 在指定位置绘制按钮
int iWidth = m_pImage->GetWidth()/iCount;
int iHeight = m_pImage->GetHeight();
RectF grect;
grect.X=(Gdiplus::REAL)m_rcRect.left;
grect.Y=(Gdiplus::REAL)m_rcRect.top;
grect.Width = (Gdiplus::REAL)m_rcRect.Width();
grect.Height = (Gdiplus::REAL)m_rcRect.Height();
graphics.DrawImage(m_pImage, grect, (Gdiplus::REAL)iWidth*iButtonIndex,0,(Gdiplus::REAL)iWidth,(Gdiplus::REAL)iHeight, UnitPixel);
StringFormat stringFormat;
if (m_pIcon)
{
PointF ptIcon(m_ptIcon.x,m_ptIcon.y);
graphics.DrawImage(m_pIcon,ptIcon);
grect.X=(Gdiplus::REAL)m_ptIcon.x + m_pIcon->GetWidth() + 2;
grect.Width = (Gdiplus::REAL)m_rcRect.Width() - m_pIcon->GetWidth() - 2;
stringFormat.SetFormatFlags( StringFormatFlagsDirectionVertical);
stringFormat.SetAlignment(StringAlignmentCenter);
stringFormat.SetLineAlignment(StringAlignmentNear);
}
else
{
//stringFormat.SetFormatFlags( StringFormatFlagsDirectionVertical);
stringFormat.SetAlignment(StringAlignmentCenter);
stringFormat.SetLineAlignment(StringAlignmentCenter);
}
if (!m_strCaption.IsEmpty())
{
//绘制文字
FontFamily fontFamily(L"宋体");
Gdiplus::Font font(&fontFamily, 10, FontStyleRegular, UnitPoint);
CStringW strTitle(m_strCaption);
SolidBrush brush((ARGB)Color::White);
if (m_bDisabled)
{
brush.SetColor((ARGB)Color::Gray);
}
graphics.DrawString(strTitle, strTitle.GetLength(), &font,grect,&stringFormat, &brush);
}
}
示例4: DrawString
void Graphics::DrawString(const wchar_t* text, size_t length, Font* font, const PointF& origin, const StringFormat* sf, Brush* brush) {
Gdiplus::Graphics* g = reinterpret_cast<Gdiplus::Graphics*>(_private);
Gdiplus::Brush* gdiBrush = reinterpret_cast<Gdiplus::Brush*>(brush->_private);
Gdiplus::Font* gdiFont = reinterpret_cast<Gdiplus::Font*>(font->_private);
Gdiplus::StringFormat* gdiFormat = reinterpret_cast<Gdiplus::StringFormat*>(sf->_private);
g->DrawString(text, (int)length, gdiFont, ToGDIPoint<PointF, Gdiplus::PointF>(origin), gdiFormat, gdiBrush);
}
示例5: onDraw
void Label::onDraw(Gdiplus::Graphics& g, int x, int y)
{
Gdiplus::FontFamily fontFamily(fontFamily_.c_str());
Gdiplus::Font font(&fontFamily, fontSize_, Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);
Gdiplus::PointF pointF(float(x+x_), float(y+y_));
Gdiplus::SolidBrush solidBrush(fontColor_);
g.DrawString(text_.c_str(), text_.length(), &font, pointF, &solidBrush);
}
示例6: 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);
}
示例7: draw_text
void draw_text(const Rect* r, const char* str)
{
Gdiplus::SolidBrush* brush = new Gdiplus::SolidBrush(*color);
if(brush == NULL) return;
st count = cl::StringUtil::char_to_wchar_count(str);
wchar* wstr = cl_alloc_type_with_count(wchar, count);
if(wstr == NULL) { delete brush; return; }
cl::StringUtil::char_to_wchar(wstr, count, str);
Gdiplus::Region old_val;
graphics->GetClip(&old_val);
Gdiplus::Region new_val(TO_RECT(r));
graphics->SetClip(&new_val);
graphics->DrawString(wstr, -1, font, TO_POINTF(((Point*)r)), brush);
graphics->SetClip(&old_val);
cl_free(wstr);
delete brush;
}
示例8: Render
void CTranslucentProgressBar::Render(Gdiplus::Graphics& g)
{
float ratio = (float)m_nPos / (m_nUpper - m_nLower);
CRect rc;
GetWindowRect(&rc);
GetParent()->ScreenToClient(&rc);
Gdiplus::RectF rect((float)rc.left, (float)rc.top, (float)rc.Width(), (float)rc.Height());
if (m_imageList[0] != NULL)
g.DrawImage(m_imageList[0], rect, static_cast<float>(0), static_cast<float>(0), rect.Width, rect.Height, Gdiplus::UnitPixel);
if (m_imageList[1] != NULL)
{
float nWidth = rc.Width() * ratio;
rect.Width = nWidth;
(void)g.DrawImage(m_imageList[1], rect, static_cast<float>(0), static_cast<float>(0), nWidth, rect.Height, Gdiplus::UnitPixel);
rect.Width = (float)rc.Width();
}
CString szText;
GetWindowText(szText);
if (szText.GetLength() > 0)
{
TCHAR wsFile[MAX_PATH] = {0};
if(!CToolsHelp::Strncpy(wsFile,MAX_PATH,(LPCTSTR)szText,static_cast<IVS_UINT32>(szText.GetLength())))
{
BP_RUN_LOG_ERR(IVS_ALLOC_MEMORY_ERROR,"IVS_OCX::","Failed");
return;
}
WCHAR* wstr = CTranslucentUtility::ttowc(wsFile);
if (NULL != wstr)
{
(void)g.DrawString(wstr, static_cast<int >(wcslen(wstr)), m_pFont, rect, &m_format, &m_brush);
delete []wstr;
wstr = NULL;
}
}
}
示例9: CreateAndIndexAtlasBitmap
//---------------------------------------------------------------------------
void CreateAndIndexAtlasBitmap(Gdiplus::Font& font, Gdiplus::Graphics& charGraphics, Gdiplus::Bitmap& charBitmap,
Gdiplus::Graphics& fontSheetGraphics, FontAtlasSizeInfo* pSizeInfo,
ScreenRect* pCharacterMap )
{
using namespace Gdiplus;
WCHAR charString[2] = {' ', 0};
SolidBrush whiteBrush(Color(255, 255, 255, 255));
UINT fontSheetX = 0;
UINT fontSheetY = 0;
for(UINT i = 0; i < s_NumChars; ++i)
{
charString[0] = static_cast<WCHAR>(s_StartChar + i);
charGraphics.Clear(Color(0, 0, 0, 0));
charGraphics.DrawString(charString, 1, &font, PointF(0.0f, 0.0f), &whiteBrush);
// Compute tight char horizontal bounds (ignoring empty space).
int minX = GetCharMinX(charBitmap);
int maxX = GetCharMaxX(charBitmap);
int charWidth = maxX - minX + 1;
// Move to next row of the font sheet?
if(fontSheetX + charWidth >= pSizeInfo->atlasTextureWidth)
{
fontSheetX = 0;
fontSheetY += static_cast<int>(pSizeInfo->characterRowHeight) + 1;
}
// Save the rectangle of this character on the texture atlas.
pCharacterMap[i] = ScreenRect(fontSheetX, fontSheetY, fontSheetX + charWidth, fontSheetY + pSizeInfo->characterRowHeight);
// The rectangle subset of the source image to copy.
fontSheetGraphics.DrawImage(&charBitmap, fontSheetX, fontSheetY,
minX, 0, charWidth, pSizeInfo->characterRowHeight, UnitPixel);
// next char
fontSheetX += charWidth + 1;
}
}
示例10: DrawInformations
void CMonitorWidget::DrawInformations(Gdiplus::Graphics & graphics)
{
CRect rcDuration, rcPages, rcDiskSpace;
pStaticDuration.GetWindowRect(rcDuration);
pStaticPages.GetWindowRect(rcPages);
pStaticDiskSpace.GetWindowRect(rcDiskSpace);
ScreenToClient(rcDuration);
ScreenToClient(rcPages);
ScreenToClient(rcDiskSpace);
Gdiplus::SolidBrush textBrush(Gdiplus::Color(150, 0,0,0));
Gdiplus::SolidBrush shadowBrush(Gdiplus::Color(150, 255, 255, 255));
Gdiplus::Font font(_T("Arial"), m_nFontSize, Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
if(m_bShowDuration)
{
Gdiplus::PointF textOrigin(rcDuration.left, rcDuration.top);
Gdiplus::PointF textOriginShadow(rcDuration.left, rcDuration.top+1);
graphics.DrawString(m_csDuration, m_csDuration.GetLength(), &font, textOriginShadow, &shadowBrush);
graphics.DrawString(m_csDuration, m_csDuration.GetLength(), &font, textOrigin, &textBrush);
}
if(m_bShowPages)
{
Gdiplus::PointF textOrigin(rcPages.left, rcPages.top);
Gdiplus::PointF textOriginShadow(rcPages.left, rcPages.top+1);
graphics.DrawString(m_csPages, m_csPages.GetLength(), &font, textOriginShadow, &shadowBrush);
graphics.DrawString(m_csPages, m_csPages.GetLength(), &font, textOrigin, &textBrush);
}
if(m_bShowDiskSpace)
{
Gdiplus::PointF textOrigin(rcDiskSpace.left, rcDiskSpace.top);
Gdiplus::PointF textOriginShadow(rcDiskSpace.left, rcDiskSpace.top+1);
graphics.DrawString(m_csDiskSpace, m_csDiskSpace.GetLength(), &font, textOriginShadow, &shadowBrush);
graphics.DrawString(m_csDiskSpace, m_csDiskSpace.GetLength(), &font, textOrigin, &textBrush);
}
}
示例11: DrawItem
//.........这里部分代码省略.........
path->AddLine(rx.X + rx.Width, rx.Y + rx.Height, rx.X, rx.Y + rx.Height);
path->AddLine(rx.X, rx.Y, rx.X + shadowb, rx.Y + rx.Height - shadowb);
path->CloseFigure();
SolidBrush brush(0xff000000);
gt.FillPath(&brush, path);
tmp.Blur(tmp.Rect(), CRect(0, 0, 0, 0), shadowb);
g.DrawImage(tmp.bmp, rf, shadowb, shadowb, rf.Width, rf.Height, UnitPixel);
delete path;
}
}
Font font(L"Arial", item->selected ? 8.0f : 8.0f);
StringFormat *stringFormat = new StringFormat();
stringFormat->SetAlignment(StringAlignmentCenter);
stringFormat->SetLineAlignment(StringAlignmentCenter);
stringFormat->SetTrimming(StringTrimmingEllipsisCharacter);
stringFormat->SetFormatFlags(StringFormatFlagsLineLimit);
if(item->icon->Ready())
{
g.SetInterpolationMode(InterpolationModeBicubic);
rx = rf;
rx.Y += 6;
rx.Height -= (20 + rx.Y);
rx.Width = rx.Height;
rx.X += (rf.Width - rx.Width) / 2;
if(item->selected)
{
rx.Y++;
#define shadow 5
CDIB tmp;
tmp.Resize(item->icon->Width(), item->icon->Height());
if(tmp.Ready())
{
tmp.Draw(CRect(shadow, shadow,
item->icon->Width() - shadow,
item->icon->Height() - shadow),
item->icon->Rect(), item->icon);
DIB_ARGB *p = tmp.scan0;
int size = tmp.Width() * tmp.Height();
for(int i = 0; i < size; i++, p++)
{
p->r = 0;
p->g = 0;
p->b = 0;
}
tmp.Blur(tmp.Rect(), CRect(0, 0, 0, 0), shadow);
g.DrawImage(tmp.bmp, RectF(rx.X, rx.Y + shadow, rx.Width, rx.Height));
}
tmp.Assign(item->icon);
/*if(tmp.Ready())
{
DIB_ARGB *p = tmp.scan0;
int size = tmp.Width() * tmp.Height();
for(int i = 0; i < size; i++, p++)
{
p->r = 0x6f;
p->g = 0xa6;
p->b = 0xde;
}
}*/
g.DrawImage(tmp.bmp, rx);
}
else
{
g.DrawImage(item->icon->bmp, rx);
}
}
SolidBrush brush(0xff000000);
rx = rf;
rx.Height = 20;
rx.Y = rf.Height - rx.Height;
rx.Y++;
g.DrawString(item->text.GetBuffer(), item->text.GetLength(), &font, rx, stringFormat, &brush);
brush.SetColor(item->selected && false ? 0xff6fa6de : 0xfff0f0f0);
rx.Y--;
g.DrawString(item->text.GetBuffer(), item->text.GetLength(), &font, rx, stringFormat, &brush);
delete stringFormat;
//POSITION p = items.Find(item);
//items.GetNext(p);
//if(p)
{
RectF rx = rf;
rx.X += rx.Width - 1;
rx.Width = 1;
LinearGradientBrush brush(rx, Color(140, 0x69, 0x69, 0x69), Color(0x69, 0x69, 0x69), LinearGradientModeVertical);
g.FillRectangle(&brush, rx);
}
}
示例12: DrawEmpty
void CSimplePanelDlg::DrawEmpty(Gdiplus::Graphics& gr, CRect& rc)
{
//每次先刷新背景
Gdiplus::Color cl = Gdiplus::Color::White;
Gdiplus::SolidBrush brush(cl);
gr.FillRectangle(&brush, 0, 0, rc.Width(), rc.Height());
//显示线路号背景
Gdiplus::PointF pointLineBK(60, 0);
gr.DrawImage(m_pImLineBK, pointLineBK);
int nWidth = m_pImLineBK->GetWidth();
int nHeight = m_pImLineBK->GetHeight();
//显示--
CString strLineNum = "--";
Gdiplus::SolidBrush brushLineNum(Gdiplus::Color::White);
WCHAR wcLineNum[6] = {0};
MultiByteToWideChar(CP_ACP, 0, (char*)(LPCTSTR)strLineNum, strLineNum.GetLength(), wcLineNum, sizeof(wcLineNum));
Gdiplus::PointF pointLineNum = pointLineBK;
Gdiplus::RectF rectLineNum(pointLineNum, Gdiplus::SizeF(nWidth, nHeight));
Gdiplus::Font fontLineNum(L"helvetica", 42 , Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatLineNum;
stringFormatLineNum.SetAlignment(Gdiplus::StringAlignmentCenter);
stringFormatLineNum.SetLineAlignment(Gdiplus::StringAlignmentCenter);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wcLineNum, wcslen(wcLineNum), &fontLineNum, rectLineNum, &stringFormatLineNum, &brushLineNum);
//显示路
std::wstring str = L"路";
Gdiplus::SolidBrush brushLu(Gdiplus::Color::White);
Gdiplus::PointF pointWord = pointLineBK;
pointWord.X += 0.75 * nWidth;
Gdiplus::RectF rectWord(pointWord, Gdiplus::SizeF(40, nHeight - 5));
Gdiplus::Font fontLu(L"方正兰亭黑简体", 24 , Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatWord;
stringFormatWord.SetAlignment(Gdiplus::StringAlignmentNear);
stringFormatWord.SetLineAlignment(Gdiplus::StringAlignmentFar);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(str.c_str(), str.size(), &fontLu, rectWord, &stringFormatWord, &brushLu);
//第一辆车距离站
if(1)
{
CString strNum = "- -";
Gdiplus::SolidBrush brushNum(Gdiplus::Color(149,158,168));
WCHAR wcNum[6] = {0};
MultiByteToWideChar(CP_ACP, 0, (char*)(LPCTSTR)strNum, strNum.GetLength(), wcNum, sizeof(wcNum));
Gdiplus::PointF pointNum(60 + nWidth, 0);
Gdiplus::RectF rectNum(pointNum, Gdiplus::SizeF(145, nHeight));
Gdiplus::Font fontNum(L"helvetica", 42 , Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatNum;
stringFormatNum.SetAlignment(Gdiplus::StringAlignmentCenter);
stringFormatNum.SetLineAlignment(Gdiplus::StringAlignmentCenter);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wcNum, wcslen(wcNum), &fontNum, rectNum, &stringFormatNum, &brushNum);
std::wstring wstr = L"站";
Gdiplus::SolidBrush brushZhan(Gdiplus::Color(149,158,168));
Gdiplus::PointF pointZhan(60 + nWidth + 0.7 * 145, 0);
Gdiplus::RectF rectZhan(pointZhan, Gdiplus::SizeF(40, nHeight - 5));
Gdiplus::Font fontZhan(L"方正兰亭黑简体", 24 , Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatZhan;
stringFormatZhan.SetAlignment(Gdiplus::StringAlignmentNear);
stringFormatZhan.SetLineAlignment(Gdiplus::StringAlignmentFar);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wstr.c_str(), wstr.size(), &fontZhan, rectZhan, &stringFormatZhan, &brushZhan);
}
if(1)
{
//第二辆车距离站
CString strNum = "- -";
Gdiplus::SolidBrush brushNum(Gdiplus::Color(149,158,168));
WCHAR wcNum[6] = {0};
MultiByteToWideChar(CP_ACP, 0, (char*)(LPCTSTR)strNum, strNum.GetLength(), wcNum, sizeof(wcNum));
Gdiplus::PointF pointNum(60 + nWidth + 145, 0);
Gdiplus::RectF rectNum(pointNum, Gdiplus::SizeF(145, nHeight));
Gdiplus::Font fontNum(L"helvetica", 42 , Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatNum;
stringFormatNum.SetAlignment(Gdiplus::StringAlignmentCenter);
stringFormatNum.SetLineAlignment(Gdiplus::StringAlignmentCenter);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wcNum, wcslen(wcNum), &fontNum, rectNum, &stringFormatNum, &brushNum);
std::wstring wstr = L"站";
Gdiplus::SolidBrush brushZhan(Gdiplus::Color(149,158,168));
//.........这里部分代码省略.........
示例13: DrawArrive
void CSimplePanelDlg::DrawArrive(Gdiplus::Graphics& gr, vector<BusArrivalInfo>& vecArrival, CRect& rc, CData* pData)
{
//每次先刷新背景
Gdiplus::Color cl = Gdiplus::Color::White;
Gdiplus::SolidBrush brush(cl);
gr.FillRectangle(&brush, 0, 0, rc.Width(), rc.Height());
//显示线路号背景
Gdiplus::PointF pointLineBK(60, 0);
gr.DrawImage(m_pImLineBK, pointLineBK);
int nWidth = m_pImLineBK->GetWidth();
int nHeight = m_pImLineBK->GetHeight();
//显示线路号
CString strLineNum = pData->GetLineNumber();
Gdiplus::SolidBrush brushLineNum(Gdiplus::Color::White);
WCHAR wcLineNum[6] = {0};
MultiByteToWideChar(CP_ACP, 0, (char*)(LPCTSTR)strLineNum, strLineNum.GetLength(), wcLineNum, sizeof(wcLineNum));
Gdiplus::PointF pointLineNum = pointLineBK;
Gdiplus::RectF rectLineNum(pointLineNum, Gdiplus::SizeF(nWidth, nHeight));
Gdiplus::Font fontLineNum(L"helvetica", 42 , Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatLineNum;
stringFormatLineNum.SetAlignment(Gdiplus::StringAlignmentCenter);
stringFormatLineNum.SetLineAlignment(Gdiplus::StringAlignmentCenter);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wcLineNum, wcslen(wcLineNum), &fontLineNum, rectLineNum, &stringFormatLineNum, &brushLineNum);
//显示路
std::wstring str = L"路";
Gdiplus::SolidBrush brushLu(Gdiplus::Color::White);
Gdiplus::PointF pointWord = pointLineBK;
pointWord.X += 0.75 * nWidth;
Gdiplus::RectF rectWord(pointWord, Gdiplus::SizeF(40, nHeight - 5));
Gdiplus::Font fontLu(L"方正兰亭黑简体", 24 , Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatWord;
stringFormatWord.SetAlignment(Gdiplus::StringAlignmentNear);
stringFormatWord.SetLineAlignment(Gdiplus::StringAlignmentFar);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(str.c_str(), str.size(), &fontLu, rectWord, &stringFormatWord, &brushLu);
if(0 < vecArrival.size())
{
//显示第一辆车到站
BusArrivalInfo& stArrive = vecArrival[0];
if(stArrive.iNum > 0)
{
//距离站
CString strNum;
strNum.Format("%d", stArrive.iNum);
Gdiplus::SolidBrush brushNum(Gdiplus::Color(23,117,231));
WCHAR wcNum[6] = {0};
MultiByteToWideChar(CP_ACP, 0, (char*)(LPCTSTR)strNum, strNum.GetLength(), wcNum, sizeof(wcNum));
Gdiplus::PointF pointNum(60 + nWidth, 0);
Gdiplus::RectF rectNum(pointNum, Gdiplus::SizeF(145, nHeight));
Gdiplus::Font fontNum(L"helvetica", 42 , Gdiplus::FontStyleBold, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatNum;
stringFormatNum.SetAlignment(Gdiplus::StringAlignmentCenter);
stringFormatNum.SetLineAlignment(Gdiplus::StringAlignmentCenter);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wcNum, wcslen(wcNum), &fontNum, rectNum, &stringFormatNum, &brushNum);
std::wstring wstr = L"站";
Gdiplus::SolidBrush brushZhan(Gdiplus::Color(149,158,168));
Gdiplus::PointF pointZhan(60 + nWidth + 145 - 32, 0);
Gdiplus::RectF rectZhan(pointZhan, Gdiplus::SizeF(40, nHeight - 5));
Gdiplus::Font fontZhan(L"方正兰亭黑简体", 24 , Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatZhan;
stringFormatZhan.SetAlignment(Gdiplus::StringAlignmentNear);
stringFormatZhan.SetLineAlignment(Gdiplus::StringAlignmentFar);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wstr.c_str(), wstr.size(), &fontZhan, rectZhan, &stringFormatZhan, &brushZhan);
}
else if(stArrive.iNum == 0)
{
if(stArrive.iDistance <= 50)
{
std::wstring wstr = L"已经进站";
Gdiplus::SolidBrush brushZhan(Gdiplus::Color(23,117,231));
Gdiplus::PointF pointZhan(60 + nWidth, 0);
Gdiplus::RectF rectZhan(pointZhan, Gdiplus::SizeF(145, nHeight - 5));
Gdiplus::Font fontZhan(L"方正兰亭黑简体", 24 , Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);
Gdiplus::StringFormat stringFormatZhan;
stringFormatZhan.SetAlignment(Gdiplus::StringAlignmentFar);
stringFormatZhan.SetLineAlignment(Gdiplus::StringAlignmentFar);
gr.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAlias);
gr.DrawString(wstr.c_str(), wstr.size(), &fontZhan, rectZhan, &stringFormatZhan, &brushZhan);
}
else
//.........这里部分代码省略.........