本文整理汇总了C++中gdiplus::Graphics::GetHDC方法的典型用法代码示例。如果您正苦于以下问题:C++ Graphics::GetHDC方法的具体用法?C++ Graphics::GetHDC怎么用?C++ Graphics::GetHDC使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gdiplus::Graphics
的用法示例。
在下文中一共展示了Graphics::GetHDC方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawTextMeasure
Gdiplus::RectF GdiplusUtilities::DrawTextMeasure(Gdiplus::Graphics& graphics, LPCTSTR lpchText, int cchText, const LOGFONT& lf)
{
HDC hdc = graphics.GetHDC();
Gdiplus::Font font(hdc, &lf);
graphics.ReleaseHDC(hdc);
return DrawTextMeasure(graphics, lpchText, cchText, font);
}
示例2: DrawBackground
void TrackListCtrl::DrawBackground(Gdiplus::Graphics& g, const Gdiplus::Rect& r)
{
CRect rc;
HDC hdc = g.GetHDC();
if (hdc == NULL)
{
TRACE(_T("@1 TrackListCtrl::DrawBackground. Cant get HDC\r\n"));
return;
}
CDC* pDC = CDC::FromHandle(hdc);
rc.SetRect(r.X, r.Y, r.GetRight(), r.GetBottom());
pDC->FillSolidRect(&rc, m_colors[COL_Bk]);//RGB(0,0,0));
//if (GetItemCount() == 0)
//{
// rc.top += 10;
// pDC->SetTextColor(m_colors[COL_Text]);
// pDC->SetBkMode(TRANSPARENT);
// CFont* oldFont = pDC->SelectObject(m_pBoldFont);
// pDC->DrawText(PRGAPI()->GetString(IDS_EMPTY), -1, rc,
// DT_CENTER | DT_WORDBREAK | DT_NOPREFIX | DT_NOCLIP);
// pDC->SelectObject(oldFont);
//}
g.ReleaseHDC(pDC->m_hDC);
}
示例3: Export
void TVizMapContext::Export(const TStr& FNm, const TStr& EncoderType, const int& Width,
const int& Height, const bool& ShowPointNmP, const int& PointFontSize,
const int& PointNmFontScale, const double& PointWgtThreshold, const bool& ShowCatNmP,
const bool& ShowKeyWdP, const int& KeyWdFontSize, const bool& ShowMgGlassP,
const int& LegendGridWidth, const int& LegendGridHeight) {
// create graphics
Gdiplus::Bitmap* Bmp = new Gdiplus::Bitmap(Width, Height);
Gdiplus::Graphics* g = Gdiplus::Graphics::FromImage(Bmp);
PGks BmpGks = TWfGks::New();
// paint graphics
HDC HdcHandle = g->GetHDC(); BmpGks->BeginPaint(HdcHandle);
Paint(BmpGks, ShowPointNmP, PointFontSize, PointNmFontScale,
PointWgtThreshold, -1, ShowCatNmP, ShowKeyWdP, KeyWdFontSize, ShowMgGlassP,
LegendGridWidth, LegendGridHeight);
BmpGks->EndPaint(); g->ReleaseHDC(HdcHandle);
// save to disk
WCHAR* FNmWChar = new WCHAR[FNm.Len() + 1];
const int Res = MultiByteToWideChar(CP_ACP, 0,
FNm.CStr(), FNm.Len() + 1, FNmWChar, FNm.Len() + 1);
CLSID pngClsid; GetEncoderClsid(EncoderType, &pngClsid);
Bmp->Save(FNmWChar, &pngClsid, NULL);
// clean after
delete FNmWChar; delete Bmp; delete g;
}
示例4: drawTextWithSpacing
void drawTextWithSpacing(GraphicsContext* graphicsContext, const SimpleFontData* font, const wxColour& color, const GlyphBuffer& glyphBuffer, int from, int numGlyphs, const FloatPoint& point)
{
#if USE(WXGC)
wxGCDC* dc = static_cast<wxGCDC*>(graphicsContext->platformContext());
#else
wxDC* dc = graphicsContext->platformContext();
#endif
// get the native HDC handle to draw using native APIs
HDC hdc = 0;
#if USE(WXGC)
wxGraphicsContext* gc = dc->GetGraphicsContext();
Gdiplus::Graphics* g;
if (gc) {
g = (Gdiplus::Graphics*)gc->GetNativeContext();
hdc = g->GetHDC();
}
#else
hdc = static_cast<HDC>(dc->GetHDC());
#endif
// ExtTextOut wants the offsets as an array of ints, so extract them
// from the glyph buffer
const GlyphBufferGlyph* glyphs = glyphBuffer.glyphs(from);
const GlyphBufferAdvance* advances = glyphBuffer.advances(from);
float y = point.y() - font->ascent();
float x = point.x();
int* spacing = new int[numGlyphs - from];
for (unsigned i = 0; i < numGlyphs; ++i)
spacing[i] = advances[i].width();
wxFont* wxfont = font->getWxFont();
if (wxfont && wxfont->IsOk())
::SelectObject(hdc, GetHfontOf(*wxfont));
if (color.Ok())
::SetTextColor(hdc, color.GetPixel());
// do not draw background behind characters
::SetBkMode(hdc, TRANSPARENT);
// draw text with optional character widths array
wxString string = wxString((wxChar*)(&glyphs[from]), numGlyphs);
::ExtTextOut(hdc, x, y, 0, NULL, string.c_str(), string.length(), spacing);
::SetBkMode(hdc, TRANSPARENT);
#if USE(WXGC)
g->ReleaseHDC(hdc);
#endif
delete [] spacing;
}
示例5: SetResolution
void GuiEngine::SetResolution(Vec2u& size)
{
DeleteObject(memBitmap);
DeleteDC(hdc);
DeleteDC(memHDC);
Gdiplus::Graphics* graphics = Gdiplus::Graphics::FromHWND((HWND)targetWindow->GetNativeHandle());
graphics->SetSmoothingMode(Gdiplus::SmoothingModeDefault);
hdc = graphics->GetHDC();
memHDC = CreateCompatibleDC(hdc);
memBitmap = CreateCompatibleBitmap(hdc, size.x, size.y);
SelectObject(memHDC, memBitmap);
gdiGraphics = Gdiplus::Graphics::FromHDC(memHDC);
}
示例6: DrawTextOutline
BOOL GdiplusUtilities::DrawTextOutline(Gdiplus::Graphics& graphics,
LPCTSTR lpchText, int cchText, const RECT* lprc, UINT format,
const LOGFONT& lf, COLORREF fill, COLORREF outline, INT outlineWidth,
BOOL bCalcOnly /*= FALSE*/, RECT* rcCalc/* = NULL*/)
{
HDC hdc = graphics.GetHDC();
Gdiplus::Font font(hdc, &lf);
graphics.ReleaseHDC(hdc);
Gdiplus::StringFormat sFormat;
if (format & DT_VCENTER)
sFormat.SetLineAlignment(Gdiplus::StringAlignmentCenter);
else if (format & DT_BOTTOM)
sFormat.SetLineAlignment(Gdiplus::StringAlignmentFar);
else
sFormat.SetLineAlignment(Gdiplus::StringAlignmentNear);
if (format & DT_CENTER)
sFormat.SetAlignment(Gdiplus::StringAlignmentCenter);
else if (format & DT_RIGHT)
sFormat.SetAlignment(Gdiplus::StringAlignmentFar);
else
sFormat.SetAlignment(Gdiplus::StringAlignmentNear);
Gdiplus::Rect rcForCalc;
Gdiplus::Rect* pRCForCalc = &rcForCalc;
if (rcCalc == NULL)
pRCForCalc = NULL;
if (DrawTextOutline(graphics, lpchText, cchText, RECT2GdiplusRect(*lprc), sFormat, font,
COLORREF2Color(fill), COLORREF2Color(outline), outlineWidth, bCalcOnly, pRCForCalc))
{
if (pRCForCalc != NULL)
*rcCalc = GdiplusRect2RECT(*pRCForCalc);
return TRUE;
}
return FALSE;
}
示例7: DrawItem
void TrackListCtrl::DrawItem(Gdiplus::Graphics& g, INT nItem, Gdiplus::Rect& itemRC)
{
HDC hdc = g.GetHDC();
if (hdc == 0)
{
TRACE(_T("@1 TrackListCtrl::DrawItem. Cant get HDC\r\n"));
return;
}
CDC* pDC = CDC::FromHandle(hdc);
PrgAPI* pAPI = PRGAPI();
//Calculate Colors
BOOL bSelected = IsItemSelected(nItem);
COLORREF clrText = m_colors[COL_Text];
COLORREF clrBk = m_colors[COL_Bk];
if (bSelected)
{
clrText = m_colors[COL_TextSel];
clrBk = m_colors[COL_TextSelBk];
}
CRect rcSubItem(itemRC.X, itemRC.Y, itemRC.GetRight(), itemRC.GetBottom());
pDC->SetTextColor(clrText);
pDC->FillSolidRect(rcSubItem, clrBk);
const INT cMargin = 2;
FullTrackRecordSP& rec = (*m_pCollection)[nItem];
pDC->SetBkMode(TRANSPARENT);
INT curx = cMargin;
CRect rcFirstLine(rcSubItem);
rcFirstLine.bottom = rcFirstLine.top + 20;
rcFirstLine.left = cMargin;
rcFirstLine.right -= cMargin;
CRect rcSecondLine(rcSubItem);
rcSecondLine.top = rcFirstLine.bottom;
rcSecondLine.left = cMargin;
rcSecondLine.right -= cMargin;
if (m_bDrawPictures)
{
INT imgHeight = 32;//rcSubItem.Height() - 2 * cMargin;
INT cury = rcSubItem.top + cMargin;
LocalPictureManager* pLM = PRGAPI()->GetLocalPictureManager();
Gdiplus::Rect rcImage(curx, cury, imgHeight, imgHeight);
Graphics g2(hdc);
BOOL bRet = pLM->DrawAlbumThumbnail(rec->artist.name.c_str(), rec->album.name.c_str(), g2, rcImage);
if (!bRet)
bRet = pLM->DrawArtistThumbnail(rec->artist.name.c_str(), g2, rcImage);
if (!bRet)
bRet = pLM->DrawDefaultThumbnail(IIT_AlbumPicture, g2, rcImage);
curx += 32 + cMargin ;
}
rcSecondLine.left = curx;
//=== Draw the icon
INT cury = rcFirstLine.top + (rcFirstLine.Height() - 16) / 2;
pDC->SetTextColor(clrText);
DrawIconEx(pDC->m_hDC, curx, cury, pAPI->GetIconForTrackType(rec->track.trackType), 16, 16, 0, 0, DI_NORMAL);
curx += 16 + cMargin;
//=== Draw the title
CRect rcTitle(rcFirstLine);
rcTitle.left = curx;
CFont* pOldFont = pDC->SelectObject(m_pBoldFont);
pDC->DrawText(rec->track.name.c_str(), rec->track.name.size(), &rcTitle, DT_END_ELLIPSIS | DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
pDC->DrawText(rec->track.name.c_str(), rec->track.name.size(), &rcTitle, DT_END_ELLIPSIS | DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX | DT_CALCRECT);
//=== Draw the artist
CRect rcArtist(rcFirstLine);
rcArtist.left = rcTitle.right + cMargin;
pDC->DrawText(rec->artist.name.c_str(), rec->artist.name.size(), &rcArtist, DT_END_ELLIPSIS | DT_RIGHT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
pDC->SelectObject(m_pNormalFont);
//=== Next line
//=== Draw the rating (if exists)
if (rec->track.rating > 0 && rec->track.rating < 256)
{
FLOAT fStars = Rating2Stars(rec->track.rating);
if (fStars > 0.0f && fStars <=1.0f)
{
DrawIconEx(hdc, rcSecondLine.left, rcSecondLine.top, pAPI->GetIcon(ICO_StarBad16), 16, 16, 0, 0, DI_NORMAL);
rcSecondLine.left += 17;
}
while (fStars > 1.0f)
{
DrawIconEx(hdc, rcSecondLine.left, rcSecondLine.top, pAPI->GetIcon(ICO_StarGold16), 16, 16, 0, 0, DI_NORMAL);
fStars -= 1.0f;
rcSecondLine.left += 17;
}
}
//.........这里部分代码省略.........