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

            日本道色综合久久影院| 日本WV一本一道久久香蕉| 热99re久久国超精品首页| 亚洲一区中文字幕久久| 色综合久久中文字幕综合网| 精品国产青草久久久久福利| 亚洲一本综合久久| 亚洲午夜久久久久妓女影院| 久久久久18| 久久国产精品免费一区| 狠狠色丁香婷婷久久综合| 久久最近最新中文字幕大全 | 97精品国产97久久久久久免费| 久久综合国产乱子伦精品免费| 久久综合鬼色88久久精品综合自在自线噜噜| 久久丫精品国产亚洲av不卡| 久久av高潮av无码av喷吹| 国产欧美一区二区久久| 亚洲精品午夜国产VA久久成人| 精品久久久久久久国产潘金莲| 久久婷婷国产麻豆91天堂| 久久精品九九亚洲精品| 久久久国产亚洲精品| 狠狠久久综合伊人不卡| 9999国产精品欧美久久久久久| 久久国产热精品波多野结衣AV| 久久夜色精品国产噜噜亚洲a | 五月丁香综合激情六月久久| 欧美成a人片免费看久久| 国产亚洲精久久久久久无码AV| 97久久精品无码一区二区| 99久久久国产精品免费无卡顿| 一本色道久久88—综合亚洲精品| 久久国产亚洲精品| 一级A毛片免费观看久久精品| 久久综合久久美利坚合众国| 人妻丰满?V无码久久不卡| 欧美久久久久久| 久久久亚洲欧洲日产国码二区 | 亚洲级αV无码毛片久久精品| 久久九九兔免费精品6|