+ -
当前位置:首页 → 问答吧 → [GDI]如何对DrawText()绘制的文本进行裁减??

[GDI]如何对DrawText()绘制的文本进行裁减??

时间:2011-11-30

来源:互联网

比如说,我将文本绘制到 { 100, 100, 200, 200 } 的位置,然后我只想显示其中 { 150, 150, 200, 200 } 的内容,
如何裁减呢?

作者: weiwuyuan   发布时间: 2011-11-30

C/C++ code
void CXXXDlg::OnPaint() 
{
    CPaintDC dc(this);

    dc.SetBkMode(TRANSPARENT);
    CRect rc(100, 100, 200, 200);
    TCHAR szText[] = _T("Hello World Hello World Hello World Hello World");
    CBrush* pBr = (CBrush*)dc.SelectStockObject(NULL_BRUSH);
    dc.Rectangle(&rc);

    CRgn rgn;
    CRect rect(150, 150, 200, 200);
    rgn.CreateRectRgnIndirect(&rect);

    dc.Rectangle(&rect);
    dc.SelectClipRgn(&rgn);
    
    dc.DrawText(szText, &rc, DT_CENTER | DT_WORDBREAK);
    dc.SelectObject(pBr);
}

作者: VisualEleven   发布时间: 2011-11-30

引用 1 楼 visualeleven 的回复:
C/C++ code

void CXXXDlg::OnPaint()
{
CPaintDC dc(this);

dc.SetBkMode(TRANSPARENT);
CRect rc(100, 100, 200, 200);
TCHAR szText[] = _T("Hello World Hello World Hello World Hel……


请问如何不用MFC,只用GDI实现?

作者: weiwuyuan   发布时间: 2011-11-30

SelectClipRgn

这个是关键

作者: Kaile   发布时间: 2011-11-30

引用 3 楼 kaile 的回复:
SelectClipRgn

这个是关键


恩谢谢
请问通过CreateRectRgn()创建的HRGN对象需要delete么?

作者: weiwuyuan   发布时间: 2011-11-30

收我为徒吧

作者: tianye306   发布时间: 2011-11-30