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

            99久久人人爽亚洲精品美女| 久久精品黄AA片一区二区三区| 久久噜噜电影你懂的| 青青青国产成人久久111网站| 激情久久久久久久久久| 亚洲日本va午夜中文字幕久久| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久久久久久久无码精品亚洲日韩 | 久久性生大片免费观看性| 久久精品桃花综合| 99久久99久久精品免费看蜜桃 | 国产毛片久久久久久国产毛片 | 国产综合久久久久| 欧美久久一级内射wwwwww.| 久久精品国产亚洲AV无码娇色| 久久人人爽人人澡人人高潮AV| 亚洲国产精品无码久久| 久久人人超碰精品CAOPOREN| 欧洲精品久久久av无码电影| 亚洲国产日韩欧美综合久久| 国产精品久久久久久搜索| 久久久国产视频| 中文成人久久久久影院免费观看| 久久99毛片免费观看不卡| 午夜不卡久久精品无码免费| 久久综合色老色| 久久天天躁狠狠躁夜夜不卡| 国产精品嫩草影院久久| 久久精品国产精品青草app| 亚洲欧美日韩久久精品第一区| 人妻精品久久久久中文字幕| 国内精品欧美久久精品| 精品久久久久久无码免费| 国产精品久久久久…| 国产精品岛国久久久久| 久久亚洲春色中文字幕久久久| 亚洲国产美女精品久久久久∴ | 久久久久人妻精品一区二区三区| 久久午夜免费视频| 久久人与动人物a级毛片| 色青青草原桃花久久综合|