• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            brent's hut

            Use Skia in MFC or Win32 application

            What is Skia

            Skia is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome and Chrome OS, Android, Mozilla Firefox and Firefox OS, and many other products.

            How to download and build Skia

            Just follow https://skia.org/user/download, and do it step by step, we will need a static build for use lately.

            How to use Skia in a MFC application

            1. Create your MFC application

            2. Add Skia path to "VC++ Directories" of the project



            3. Add Skia library paths to "Additional Library Directories"



            4. Add "uafxcw.lib;LIBCMT.lib;opengl32.lib;glu32.lib;skia.lib;sk_app.GLWindowContext.obj;sk_app.GLWindowContext_win.obj" to "Additional Dependencies". Add "uafxcw.lib;LIBCMT.lib;" to "Ignore Specific Default Libraries."



            5. In XXXDlg.h:
            #include "tools\sk_app\DisplayParams.h"
            #include "tools\sk_app\WindowContext.h"

            protected:
            HICON m_hIcon;
            sk_app::DisplayParams m_paras;
            std::unique_ptr<sk_app::WindowContext> m_skaContext;

            6. In XXXDlg.cpp:

            #include "include\core\SkPoint.h"
            #include "include\core\SkFont.h"
            #include "include\core\SkCanvas.h"
            #include "include\core\SkSurface.h"
            #include "tools\sk_app\win\WindowContextFactory_win.h"
            using namespace sk_app;

            BOOL XXXDlg::OnInitDialog()
            {
            m_skaContext = window_context_factory::MakeGLForWin(m_hWnd, m_paras);
            return TRUE;
            }

            void XXXDlg::OnSize(UINT nType, int cx, int cy)
            {
            if(m_skaContext)
            m_skaContext->resize(cx, cy);
            }

            void XXXDlg::OnPaint()
            {
            sk_sp<SkSurface> backbuffer = m_skaContext->getBackbufferSurface();
            if (backbuffer) {
            SkCanvas* c = backbuffer->getCanvas();
            c->clear(SK_ColorWHITE);
            SkPaint p(SkColors::kBlack);
            c->drawLine(SkPoint::Make(0, 0), SkPoint::Make(m_skaContext->width(), m_skaContext->height()), p);

            static const char message[] = "Hello World";

            SkFont font;
            font.setSubpixel(true);
            font.setSize(20);
            c->drawSimpleText(message, strlen(message), SkTextEncoding::kUTF8, 0, m_skaContext->height() -2, font, p);
            backbuffer->flush();

            m_skaContext->swapBuffers();
            }
            }

            7. If everything is OK, the result will be:


            posted on 2020-02-07 07:53 brent 閱讀(2801) 評論(0)  編輯 收藏 引用 所屬分類: C++

            久久无码一区二区三区少妇| 久久国产精品免费一区| 中文字幕乱码人妻无码久久| 亚洲欧美日韩中文久久| 色综合久久综合网观看| 中文字幕久久亚洲一区| 国产三级观看久久| 久久久国产乱子伦精品作者| 亚洲国产精品成人AV无码久久综合影院 | 伊人久久精品线影院| 午夜天堂av天堂久久久| 国产91久久综合| 性欧美丰满熟妇XXXX性久久久 | 久久精品无码专区免费东京热| 国产日产久久高清欧美一区| 99久久国产热无码精品免费 | 国产呻吟久久久久久久92| 香蕉久久久久久狠狠色| 久久人人超碰精品CAOPOREN | 久久精品中文字幕有码| 国产精品无码久久综合网| 精品国产乱码久久久久久人妻| 久久受www免费人成_看片中文| 久久99精品国产99久久6男男| 久久久亚洲AV波多野结衣| 久久99精品国产麻豆蜜芽| 久久精品国产99久久无毒不卡| 久久久久久久久久久| 亚洲乱码日产精品a级毛片久久| 久久综合狠狠色综合伊人| 日韩av无码久久精品免费| 精品永久久福利一区二区 | 69久久夜色精品国产69| 国产精品禁18久久久夂久| 国产69精品久久久久久人妻精品| 色播久久人人爽人人爽人人片aV| 狠狠色丁香久久婷婷综合图片| 久久精品毛片免费观看| 久久久久免费看成人影片| 国产精品久久久亚洲| 久久se精品一区二区|