• <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 閱讀(2874) 評論(0)  編輯 收藏 引用 所屬分類: C++

            7国产欧美日韩综合天堂中文久久久久 | 狠狠精品久久久无码中文字幕| 香蕉99久久国产综合精品宅男自| 热久久视久久精品18| 婷婷伊人久久大香线蕉AV| 99久久精品国产一区二区蜜芽| 久久激情五月丁香伊人| 无码人妻精品一区二区三区久久久 | 久久精品卫校国产小美女| 精品国产VA久久久久久久冰| 久久久WWW成人| 日日噜噜夜夜狠狠久久丁香五月| 久久精品国产国产精品四凭| 无码国内精品久久人妻蜜桃 | 久久精品极品盛宴观看| 亚洲精品国产成人99久久| 国产偷久久久精品专区| 欧美大战日韩91综合一区婷婷久久青草 | 成人综合伊人五月婷久久| 亚洲精品tv久久久久久久久久| .精品久久久麻豆国产精品| 欧美久久一区二区三区| 国产三级精品久久| 狠狠色丁香婷婷久久综合不卡 | 99久久精品国内| 亚洲欧美日韩久久精品第一区 | 久久精品国产亚洲AV大全| 成人久久免费网站| 欧美黑人激情性久久| 久久久精品国产亚洲成人满18免费网站| 欧美一区二区三区久久综合| 99蜜桃臀久久久欧美精品网站| 亚洲精品国产自在久久| 一本一本久久a久久精品综合麻豆| 国内精品久久久久国产盗摄| 国产成人久久久精品二区三区| 精品综合久久久久久88小说| 99久久综合狠狠综合久久| 久久久久久A亚洲欧洲AV冫| 久久激情五月丁香伊人| 精品久久久久久久国产潘金莲|