• MFC-从GDI到GDI+


    VS2012

    hpp
    
    //GDI+的头文件
    #include <gdiplus.h>
    
    using namespace Gdiplus;
    
    #pragma comment(lib,"gdiplus.lib")
    
    
    
        //定义两个变量
        GdiplusStartupInput m_pGdiplusStartupInput;
        ULONG_PTR m_pGdiToken;
    
    
    
    
    cpp
    
    BOOL CDemoDlg::OnInitDialog()
    
        //初始化GDI+
        GdiplusStartup(&m_pGdiToken, &m_pGdiplusStartupInput, NULL);
    
    
    
    
    
    void CDemoDlg::OnBnClickedButton1()
    {
        // TODO:  在此添加控件通知处理程序代码
    
        //先用GDI,GDI里最重要的就是DC
    
        //GDI写字
        CDC* pDC = this->GetDC();
    
        //创建字体
        CFont font;
        font.CreatePointFont(160, "宋体");
        CFont* pOldFont = pDC->SelectObject(&font);
    
        //设置为透明的
        pDC->SetBkMode(TRANSPARENT);
    
        //改变颜色(红色)
        pDC->SetTextColor(RGB(255, 0, 0));
    
        //输出字符串
        pDC->TextOut(100, 130, "Hello GDI");
    
        //新的字体用完,把旧的字体放回去
        pDC->SelectObject(pOldFont);
    
        //GDI画线
        CPen pen;
        pen.CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
        CPen* pOldPen = pDC->SelectObject(&pen);
        pDC->MoveTo(100, 200);
        pDC->LineTo(500, 200);
        pDC->SelectObject(pOldPen);
    }
    
    
    
    void CDemoDlg::OnBnClickedButton2()
    {
        // TODO:  在此添加控件通知处理程序代码
    
        //GDI+,GDI+的核心是Graphics对象
        //创建图形对象,GDI+必须使用宽字符
        Graphics g(this->m_hWnd);//传入窗口句柄
        //创建画刷
        SolidBrush brush(Color(255, 0, 0, 255));
        //创建字体
        FontFamily fontFamily(L"宋体");
        Gdiplus::Font f(&fontFamily, 16);
        PointF point(200.0f, 130.0f);
        g.DrawString(L"Hello GDI+", 10, &f, point, &brush);
    
        //画线
        Pen p(Color(255, 0, 0, 255));
        g.DrawLine(&p, 100, 260, 500, 260);
    }
    
    
    
    void CDemoDlg::OnDestroy()
    {
        CDialogEx::OnDestroy();
    
        // TODO:  在此处添加消息处理程序代码
    
        //销毁窗口时卸载GDI+
        GdiplusShutdown(m_pGdiToken);
    }
    
    Caesar卢尚宇
    2021年1月22日

    作者: 阿飞

    出处: https://www.cnblogs.com/nxopen2018/>

    关于作者:......

    如有问题, 可在底部(留言)咨询.

  • 相关阅读:
    在Raspberry pi4上架设Minecraft1.17
    解决Android-x86在VMware中不能启动GUI的问题
    WMware player 16在超过两台显示器时的多显示器问题
    制动电阻的阻值和功率计算
    拉卡尼休在石块旷野
    在VirtualBox中调整Raspbian分辨率
    如何在VLC播放器中显示毫秒
    EXCEL高亮选中行/列
    Notepad++加强安全性检查,避免被CIA利用
    AutoCAD AutoLisp 脚本编写
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14314982.html
Copyright © 2020-2023  润新知