• <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++

            国产韩国精品一区二区三区久久| 久久精品国产第一区二区三区| 久久天天婷婷五月俺也去| 东方aⅴ免费观看久久av| 91麻豆精品国产91久久久久久| 久久久久久久久久久久中文字幕| 久久久久波多野结衣高潮| 国产成人无码精品久久久性色| 久久笫一福利免费导航| 久久毛片一区二区| 久久亚洲AV成人无码软件| 久久这里有精品| 中文字幕久久波多野结衣av| 国产精品久久久香蕉| 精品久久久久中文字幕一区| 国产精品美女久久久久久2018| 亚洲一区二区三区日本久久九| 久久久久国产一级毛片高清版| 久久久久无码精品国产| 久久久精品国产sm调教网站| 性做久久久久久久| 无码国内精品久久综合88| 国产午夜精品理论片久久 | 色偷偷88欧美精品久久久| 四虎国产精品成人免费久久| 国产精品日韩深夜福利久久| 久久狠狠高潮亚洲精品| 亚洲国产精品无码久久一区二区 | 久久人人爽人人爽人人片AV东京热 | 久久久亚洲精品蜜桃臀| 国产精品久久久久久久| 精品国产乱码久久久久软件| 久久久99精品一区二区| 久久久久久久尹人综合网亚洲| 久久精品国产网红主播| 久久国产高潮流白浆免费观看| 无码国内精品久久人妻| 性欧美丰满熟妇XXXX性久久久| 青青草原精品99久久精品66| 999久久久无码国产精品| 国产精品久久久久无码av|