本文整理汇总了C++中SetMapMode函数的典型用法代码示例。如果您正苦于以下问题:C++ SetMapMode函数的具体用法?C++ SetMapMode怎么用?C++ SetMapMode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SetMapMode函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetHIMETRICtoDP
void SetHIMETRICtoDP(HDC hdc, SIZE* sz)
{
POINT pt;
int nMapMode = GetMapMode(hdc);
if (nMapMode < MM_ISOTROPIC && nMapMode != MM_TEXT) {
// when using a constrained map mode, map against physical inch
SetMapMode(hdc, MM_HIMETRIC);
pt.x = sz->cx;
pt.y = sz->cy;
LPtoDP(hdc, &pt, 1);
sz->cx = pt.x;
sz->cy = pt.y;
SetMapMode(hdc, nMapMode);
}
else {
// map against logical inch for non-constrained mapping modes
int cxPerInch, cyPerInch;
cxPerInch = GetDeviceCaps(hdc, LOGPIXELSX);
cyPerInch = GetDeviceCaps(hdc, LOGPIXELSY);
sz->cx = MulDiv(sz->cx, cxPerInch, HIMETRIC_INCH);
sz->cy = MulDiv(sz->cy, cyPerInch, HIMETRIC_INCH);
}
pt.x = sz->cx;
pt.y = sz->cy;
DPtoLP(hdc, &pt, 1);
sz->cx = pt.x;
sz->cy = pt.y;
}
示例2: widget_
RenderContext::RenderContext(Widget* widget)
: widget_(widget)
, gdi_(NULL)
{
HDC wnd_dc = BeginPaint(widget->hwnd(), &ps_);
SetGraphicsMode(wnd_dc, GM_ADVANCED);
SetMapMode(wnd_dc, MM_TEXT);
SetBkMode(wnd_dc, OPAQUE);
//SetBkMode(wnd_dc, TRANSPARENT);
dc_ = ::CreateCompatibleDC(wnd_dc);
//dc_ = wnd_dc;
SetGraphicsMode(dc_, GM_ADVANCED);
SetMapMode(dc_, MM_TEXT);
SetBkMode(dc_, OPAQUE);
//SetMapMode(dc_, MM_LOENGLISH);
//SetWorldTransform(dc_, &Matrix().ToXFORM());
RECT rc;
::GetClientRect(widget->hwnd(), &rc);
rect_ = rc;
bitmap_ = CreateDIB(rect_.width(), rect_.height());
bitmap_prev_ = (HBITMAP)::SelectObject(dc_, bitmap_);
gdi_ = new Gdiplus::Graphics(dc_);
}
示例3: SendMessage
int TooltipManagerWin::CalcTooltipHeight()
{
// Ask the tooltip for it's font.
int height;
HFONT hfont = reinterpret_cast<HFONT>(
SendMessage(tooltip_hwnd_, WM_GETFONT, 0, 0));
if(hfont != NULL)
{
HDC dc = GetDC(tooltip_hwnd_);
HFONT previous_font = static_cast<HFONT>(SelectObject(dc, hfont));
int last_map_mode = SetMapMode(dc, MM_TEXT);
TEXTMETRIC font_metrics;
GetTextMetrics(dc, &font_metrics);
height = font_metrics.tmHeight;
// To avoid the DC referencing font_handle_, select the previous font.
SelectObject(dc, previous_font);
SetMapMode(dc, last_map_mode);
ReleaseDC(NULL, dc);
}
else
{
// Tooltip is using the system font. Use gfx::Font, which should pick
// up the system font.
height = gfx::Font().GetHeight();
}
// Get the margins from the tooltip
RECT tooltip_margin;
SendMessage(tooltip_hwnd_, TTM_GETMARGIN, 0, (LPARAM)&tooltip_margin);
return height + tooltip_margin.top + tooltip_margin.bottom;
}
示例4: CWallBrowserStretchView
/*
CWallBrowserStretchView()
*/
CWallBrowserStretchView::CWallBrowserStretchView()
{
m_pWinAppEx = (CWinAppEx*)AfxGetApp();
m_bLoaded = FALSE;
m_bHavePicture = FALSE;
memset(m_szFileName,'\0',sizeof(m_szFileName));
m_nViewType = m_pWinAppEx->m_Config.GetNumber(WALLBROWSER_OPTIONS_KEY,WALLBROWSER_VIEWTYPE_KEY);
if(m_nViewType==VIEWTYPE_SCROLL)
{
// modalita' visualizzazione (centrato/isotropic)
SetCenterMode(TRUE);
SetMapMode(MM_ANISOTROPIC);
SetCursorZoomMode(CURSOR_MODE_BYCLICK);
}
else if(m_nViewType==VIEWTYPE_STRETCH)
{
// modalita' visualizzazione (centrato/text)
SetCenterMode(FALSE);
SetMapMode(MM_TEXT);
SetCursorZoomMode(CURSOR_MODE_NONE);
}
m_nDrawMode = m_pWinAppEx->m_Config.GetNumber(WALLBROWSER_OPTIONS_KEY,WALLBROWSER_DRAWMODE_KEY);
m_rcInvalid.SetRect(-1,-1,-1,-1);
m_rcClient.SetRect(-1,-1,-1,-1);
m_ImageOperation.SetImage(NULL);
m_ImageDraw.SetImage(NULL);
m_bRebuildPalette = FALSE; // mettere a TRUE con le operazioni che cambiano l'immagine (ad es. grayscale)
memset(m_szStatus,'\0',sizeof(m_szStatus));
m_pMainFrameStatusBar = NULL;
m_nUndoLevel = 0;
m_nRedoLevel = 0;
m_nLastOperation = -1;
m_nRedo = -1;
}
示例5: IntersectRect
void ALMAPI TABLE_WLAY::Draw(HDC hDC, RECT *clipRect)
{
RECT tmpRect;
BOOL bIntersect;
bIntersect = IntersectRect(&tmpRect, clipRect, &m_rcItem);
tmpRect = m_rcItem; // always draw to the entire
// visual rect
if (bIntersect)
{
OWndLStoDS(m_oiParent, (LPPOINT)&tmpRect, 2);
int saveDC = SaveDC(hDC);
int mode = SetMapMode(hDC, MM_TEXT);
table->WIDR_Draw(hDC, &tmpRect); //widr->rectPtr);
SetMapMode(hDC, mode); // restore LOMETRIC mode
RestoreDC(hDC, saveDC);
if (table->VertScroll())
{
UpdateWindow(table->hVertScroll);
}
if (table->HorzScroll())
{
UpdateWindow(table->hHorzScroll);
}
}
}
示例6: while
void __fastcall TTaeQRRichText::Print(int OfsX, int OfsY){
TFormatRange Range;
int LogX,LogY,TextLength,OldMapMode;
bool HasExpanded;
TTaeRichEdit* ARichEdit;
Extended Expanded;
ARichEdit=ParentRichEdit==NULL?FRichEdit:ParentRichEdit;
{
register i=sizeof(TFormatRange);
register char *c=(char *) &Range;
while(i--) *c++=0;
}
Range.hdc= ParentReport->QRPrinter->Canvas->Handle;
Range.hdcTarget= Range.hdc;
LogX= GetDeviceCaps(Range.hdc, LOGPIXELSX);
LogY= GetDeviceCaps(Range.hdc, LOGPIXELSY);
Range.rc=Rect(QRPrinter->XPos(OfsX + Size->Left) * 1440 / LogX,
QRPrinter->YPos(OfsY + Size->Top) * 1440 / LogY,
QRPrinter->XPos(OfsX + Size->Width + Size->Left) * 1440 / LogX,
QRPrinter->YPos(OfsY + Size->Height + Size->Top) * 1440 / LogY);
Range.rcPage=Rect(0,0,
QRPrinter->XSize(QRPrinter->PaperWidth) * 1440 / LogX,
QRPrinter->YSize(QRPrinter->PaperLength) * 1440 / LogY);
if(PrintFinished) LastChar= 0;
HasExpanded=false;
Expanded=0;
TextLength=ARichEdit->GetTextLen();
Range.chrg.cpMax= -1;
Range.chrg.cpMin= LastChar;
OldMapMode= SetMapMode(Range.hdc, MM_TEXT);
SendMessage(ARichEdit->Handle, EM_FORMATRANGE,0,0);
LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 0, (long)&Range);
if(LastChar<TextLength&&AutoStretch&&TextLength>0&&Parent->InheritsFrom(__classid(TQRCustomBand))){
PrintFinished=false;
while(LastChar<=TextLength&&((TQRCustomBand*)Parent)->CanExpand(50)){
((TQRCustomBand*)Parent)->ExpandBand(50,Expanded,HasExpanded);
Range.rc.bottom = QRPrinter->YPos(OfsY+Size->Top+Size->Height+Expanded) * 1440 / LogY;
LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 0, (long)&Range);
}
LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 1, (long)&Range);
if(LastChar>=TextLength||LastChar==-1){
LastChar=TextLength;
PrintFinished=true;
}
} else {
LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 1, (long)&Range);
PrintFinished=true;
inherited::Print(OfsX,OfsY);
}
SetMapMode(ParentReport->QRPrinter->Canvas->Handle, OldMapMode);
if(PrintFinished)
SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 0, 0);
}
示例7: SetMapMode
void CLCDGfx::DrawText(int nX, int nY, LPCTSTR sText)
{
// map mode text, with transparency
int nOldMapMode = SetMapMode(m_hDC, MM_TEXT);
int nOldBkMode = SetBkMode(m_hDC, TRANSPARENT);
::TextOut(m_hDC, nX, nY, sText, (int)_tcslen(sText));
// restores
SetMapMode(m_hDC, nOldMapMode);
SetBkMode(m_hDC, nOldBkMode);
}
示例8: CalculateWindowHeight
static void CalculateWindowHeight(void)
{
HDC hdc = GetDC(GetDesktopWindow());
int oldMapMode = SetMapMode(hdc,MM_TEXT);
HFONT hOldFont = (HFONT) SelectObject(hdc,GetFont(FONT_INPUT));
TEXTMETRIC tm;
GetTextMetrics(hdc,&tm);
inputHeight = tm.tmHeight + tm.tmInternalLeading;
SelectObject(hdc,hOldFont);
SetMapMode(hdc,oldMapMode);
ReleaseDC(GetDesktopWindow(),hdc);
}
示例9: BDRAW_TransparentBlt
void BDRAW_TransparentBlt (HDC hdc, COLORREF clrTran)
{
//
// Method #1 -- By Jeff Prosise
//
HDC hdcImage, hdcAnd, hdcXor, hdcTemp ;
HBITMAP htAnd, htXor, htTemp ;
HBITMAP htOldImage, htOldAnd, htOldXor, htOldTemp ;
int nImage, nAnd, nXor, nTemp ;
hdcImage = CreateCompatibleDC (hdc) ;
htOldImage = (HBITMAP) SelectObject (hdcImage, BoardCfg.htTemp) ;
nImage = SetMapMode (hdcImage, GetMapMode (hdc)) ;
hdcAnd = CreateCompatibleDC (hdc) ;
nAnd = SetMapMode (hdcAnd, GetMapMode (hdc)) ;
htAnd = CreateBitmap (BoardCfg.nss, BoardCfg.nss, 1, 1, NULL) ;
htOldAnd = (HBITMAP) SelectObject (hdcAnd, htAnd) ;
SetBkColor (hdcImage, clrTran) ;
BitBlt (hdcAnd, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcImage, 0, 0, SRCCOPY) ;
hdcXor = CreateCompatibleDC (hdc) ;
nXor = SetMapMode (hdcXor, GetMapMode (hdc)) ;
htXor = CreateCompatibleBitmap (hdcImage, BoardCfg.nss, BoardCfg.nss) ;
htOldXor = (HBITMAP) SelectObject (hdcXor, htXor) ;
BitBlt (hdcXor, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcImage, 0, 0, SRCCOPY ) ;
BitBlt (hdcXor, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcAnd, 0, 0, 0x220326) ;
hdcTemp = CreateCompatibleDC (hdc) ;
nTemp = SetMapMode (hdcTemp, GetMapMode (hdc)) ;
htTemp = CreateCompatibleBitmap (hdcImage, BoardCfg.nss, BoardCfg.nss) ;
htOldTemp = (HBITMAP) SelectObject (hdcTemp, htTemp) ;
BitBlt (hdcTemp, 0, 0, BoardCfg.nss, BoardCfg.nss, hdc, 0, 0, SRCCOPY ) ;
BitBlt (hdcTemp, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcAnd, 0, 0, SRCAND ) ;
BitBlt (hdcTemp, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcXor, 0, 0, SRCINVERT) ;
BitBlt (hdc, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcTemp, 0, 0, SRCCOPY ) ;
SetMapMode (hdcTemp, nTemp ) ;
SetMapMode (hdcXor, nXor ) ;
SetMapMode (hdcAnd, nAnd ) ;
SetMapMode (hdcImage, nImage) ;
SelectObject (hdcTemp, htOldTemp ) ;
SelectObject (hdcXor, htOldXor ) ;
SelectObject (hdcAnd, htOldAnd ) ;
SelectObject (hdcImage, htOldImage) ;
DeleteObject (hdcTemp ) ;
DeleteObject (hdcXor ) ;
DeleteObject (hdcAnd ) ;
DeleteObject (hdcImage) ;
DeleteObject (htTemp ) ;
DeleteObject (htXor ) ;
DeleteObject (htAnd ) ;
}
示例10: DrawBitmap
// petzold, pp 621-622
void DrawBitmap(HDC hdc, HBITMAP hBitmap, int xStart, int yStart)
{
BITMAP bm;
HDC hdcMem;
POINT ptSize, ptOrg;
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBitmap);
SetMapMode(hdcMem, GetMapMode(hdc));
GetObject(hBitmap, sizeof(BITMAP), (LPSTR) &bm);
ptSize.x = bm.bmWidth;
ptSize.y = bm.bmHeight;
DPtoLP(hdc, &ptSize, 1);
ptOrg.x = 0;
ptOrg.y = 0;
DPtoLP(hdcMem, &ptOrg, 1);
BitBlt(hdc, xStart, yStart, ptSize.x, ptSize.y, hdcMem, ptOrg.x, ptOrg.y,
SRCCOPY);
DeleteDC(hdcMem);
}
示例11: PageGDICalls
void PageGDICalls (HDC hdcPrn, int cxPage, int cyPage)
{
static TCHAR szTextStr[] = TEXT ("Hello, Printer!") ;
Rectangle (hdcPrn, 0, 0, cxPage, cyPage) ;
MoveToEx (hdcPrn, 0, 0, NULL) ;
LineTo (hdcPrn, cxPage, cyPage) ;
MoveToEx (hdcPrn, cxPage, 0, NULL) ;
LineTo (hdcPrn, 0, cyPage) ;
SaveDC (hdcPrn) ;
SetMapMode (hdcPrn, MM_ISOTROPIC) ;
SetWindowExtEx (hdcPrn, 1000, 1000, NULL) ;
SetViewportExtEx (hdcPrn, cxPage / 2, -cyPage / 2, NULL) ;
SetViewportOrgEx (hdcPrn, cxPage / 2, cyPage / 2, NULL) ;
Ellipse (hdcPrn, -500, 500, 500, -500) ;
SetTextAlign (hdcPrn, TA_BASELINE | TA_CENTER) ;
TextOut (hdcPrn, 0, 0, szTextStr, lstrlen (szTextStr)) ;
RestoreDC (hdcPrn, -1) ;
}
示例12: SetIsotropic
void SetIsotropic(HDC hdc, int cxClient, int cyClient)
{
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc, 1000, 1000, NULL);
SetViewportExtEx(hdc, cxClient / 2, -cyClient / 2, NULL);
SetViewportOrgEx(hdc, cxClient / 2, cyClient / 2, NULL);
}
示例13: assert
//KMemDC
KMemDC::KMemDC(HDC hDC, const RECT* pRect):KDC(){
assert(hDC!=NULL);
// Some initialization
m_hDCPaint=hDC;
// Get the rectangle to draw
if(!pRect)
::GetClipBox(hDC,&m_rect);
else
m_rect=*pRect;
// Create a Memory DC
CreateCompatibleDC(hDC);
::LPtoDP(hDC,(POINT*)(&m_rect),2);
m_bitmap=::CreateCompatibleBitmap(hDC, m_rect.right-m_rect.left,m_rect.bottom-m_rect.top);
m_oldBitmap=(HBITMAP)SelectObject(m_bitmap);
SetMapMode(::GetMapMode(hDC));
SIZE size;
::GetWindowExtEx(hDC,&size);
SetWindowExt(size);
::GetViewportExtEx(hDC,&size);
SetViewportExt(size);
::DPtoLP(hDC,(POINT*)(&m_rect),2);
SetWindowOrg(m_rect.left, m_rect.top);
// Fill background
FillSolidRect(&m_rect, ::GetBkColor(hDC));
}
示例14: METAFILE_PlaybackGetDC
static GpStatus METAFILE_PlaybackGetDC(GpMetafile *metafile)
{
GpStatus stat = Ok;
stat = GdipGetDC(metafile->playback_graphics, &metafile->playback_dc);
if (stat == Ok)
{
/* The result of GdipGetDC always expects device co-ordinates, but the
* device co-ordinates of the source metafile do not correspond to
* device co-ordinates of the destination. Therefore, we set up the DC
* so that the metafile's bounds map to the destination points where we
* are drawing this metafile. */
SetMapMode(metafile->playback_dc, MM_ANISOTROPIC);
SetWindowOrgEx(metafile->playback_dc, metafile->bounds.X, metafile->bounds.Y, NULL);
SetWindowExtEx(metafile->playback_dc, metafile->bounds.Width, metafile->bounds.Height, NULL);
SetViewportOrgEx(metafile->playback_dc, metafile->playback_points[0].X, metafile->playback_points[0].Y, NULL);
SetViewportExtEx(metafile->playback_dc,
metafile->playback_points[1].X - metafile->playback_points[0].X,
metafile->playback_points[2].Y - metafile->playback_points[0].Y, NULL);
}
return stat;
}
示例15: GetDocument
void CMFC_DemoView::OnDraw(CDC* pDC)
{
CMFC_DemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
CClientDC hdc(this);
SetMapMode(hdc, MM_ANISOTROPIC); //设置映像模式
HPEN hP = (HPEN)GetStockObject(BLACK_PEN); //黑色画笔
HBRUSH hB = (HBRUSH)GetStockObject(DKGRAY_BRUSH); //画刷
SelectObject(hdc, hB); //选择画刷
SelectObject(hdc, hP); //选择画笔
RoundRect(hdc, 50, 120, 100, 200, 15, 15); //绘制圆角矩形
hB = (HBRUSH)GetStockObject(LTGRAY_BRUSH); //采用亮灰色画刷
SelectObject(hdc, hB); //选择画刷
Ellipse(hdc, 150, 50, 200, 150); //绘制椭圆
hB = (HBRUSH)GetStockObject(HOLLOW_BRUSH); //虚画刷
SelectObject(hdc, hB); //选择画刷
Pie(hdc, 250, 50, 300, 100, 250, 50, 300, 50); //绘制饼形
hP = CreatePen(PS_DASHDOT, 1, RGB(0, 0, 255));
hB = CreateHatchBrush(HS_HORIZONTAL, RGB(0, 255, 0));
SelectObject(hdc, hP);
SelectObject(hdc, hB);
RoundRect(hdc, 35, 220, 115, 270, 15, 15);
Ellipse(hdc, 125, 170, 225, 220);
Pie(hdc, 250, 120, 300, 170, 300, 120, 300, 170);
}