CDC窗口画图(不是通过ON_PAINT()实现)

该代码段展示了一个C++MFC应用程序中处理按钮点击事件的函数,用于在对话框上进行图形绘制。它创建并使用了不同颜色和样式的笔(Pen)来绘制矩形、线条,并用特定字体输出文字。程序还包含动态更新,线条位置会随着时间改变。
摘要由CSDN通过智能技术生成
void Cdemo5Dlg::OnBnClickedOk()
{
    CDC* pDC = this->GetDC();        

    CRect crect;
    GetClientRect(&crect);

    COLORREF m_ColText = RGB(255, 0, 0);//文本颜色
    COLORREF m_black = RGB(0,0,0);

    CPen* pPen;                                    //创建一支新的笔
    pPen = new CPen;
    pPen-> CreatePen(0,3,RGB(200, 100, 100));    //线型、线宽、颜色

    CPen* xPen;                                    //创建一支新的笔
    xPen = new CPen;
    xPen->CreatePen(1, 1, RGB(255, 192, 192));    //线型、线宽、颜色

    CPen* hPen;                                    //创建一支新的笔
    hPen = new CPen;
    hPen->CreatePen(1, 1, RGB(255, 0, 255));    //线型、线宽、颜色

    CFont* cfont;
    cfont = new CFont;
    cfont->CreateFont(50,0,0,0,20,false,false,false,false,false,false,false,false,L"微软雅黑");

    //BeginBatchDraw();
    while (true)
    {
        pDC->SelectObject(GetStockObject(NULL_PEN));
        pDC->Rectangle(0, 0, 640, 450);

        pDC->SelectObject(pPen);                    //选择画笔
        pDC->MoveTo(0, 355);                    //画笔移动到起始点
        pDC->LineTo(635, 355);                    //起始点-终点画线
        pDC->MoveTo(20, 10);                    //画笔移动到起始点
        pDC->LineTo(20, 375);                    //起始点-终点画线

        pDC->SelectObject(cfont);
        pDC->SetTextColor(m_black);                //设置文字颜色    
        pDC->SetBkMode(TRANSPARENT);            //设置背景透明
        CString text = L"Space";
        CSize CsText = pDC->GetTextExtent(text);    //获取显示text的规模大小
        pDC->TextOutW((crect.right-crect.left-CsText.cx)/2, 10, text);        //输出文字


        pDC->SelectObject(xPen);
        for (int i=0;i<5;i++)
        {
            pDC->MoveTo(20, 355 - (i + 1) * 50);                    //画笔移动到起始点
            pDC->LineTo(635, 355 - (i + 1) * 50);                    //起始点-终点画线
        }

        pDC->SelectObject(hPen);
        for (int i = 0; i < 12; i++)
        {
            pDC->MoveTo(20 + (i + 1) * 50 - delta, 355);                    //画笔移动到起始点
            pDC->LineTo(20 + (i + 1) * 50 - delta, 100);                    //起始点-终点画线
        }

        delta = (delta+5)%50;
        Sleep(50);
    }
    ReleaseDC(pDC);
    //EndBatchDraw();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值