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

            东方aⅴ免费观看久久av| 久久久久久久99精品免费观看| 亚洲国产成人精品无码久久久久久综合| 欧美亚洲另类久久综合| 女人香蕉久久**毛片精品| 久久精品国产清自在天天线| 亚洲精品国产综合久久一线| 无码人妻精品一区二区三区久久久| 一本大道久久东京热无码AV| 色诱久久久久综合网ywww| 久久被窝电影亚洲爽爽爽| 久久久久久久综合日本| 狠狠色综合网站久久久久久久高清| 久久精品国产久精国产| 伊人久久亚洲综合影院| 国产精品久久永久免费| 久久丫忘忧草产品| 精品久久久久久亚洲| 国色天香久久久久久久小说| 狠狠人妻久久久久久综合蜜桃| 亚洲日本va中文字幕久久| 狠狠精品久久久无码中文字幕 | 91精品国产综合久久久久久| 久久精品一区二区三区不卡| 一本色道久久综合狠狠躁| 久久久久亚洲av毛片大| 亚洲欧美精品伊人久久| 国产人久久人人人人爽| 欧美日韩久久中文字幕| 中文字幕精品久久| 久久亚洲精品无码播放| 国产成人久久久精品二区三区| 精品午夜久久福利大片| 一本色综合网久久| 久久精品国产AV一区二区三区 | 久久精品国产一区| 国内精品久久久久伊人av| 国产香蕉久久精品综合网| 久久国产乱子伦精品免费午夜| 久久99亚洲综合精品首页| 国产一区二区精品久久凹凸|