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

            国产精品无码久久四虎| 久久久久久久精品成人热色戒 | 老司机午夜网站国内精品久久久久久久久 | 国产精品美女久久久免费| 国产精品99久久久久久人| 久久青草国产精品一区| 久久国产三级无码一区二区| 久久婷婷色香五月综合激情| 午夜不卡久久精品无码免费| 26uuu久久五月天| 精品国产日韩久久亚洲| 老司机国内精品久久久久| 最新久久免费视频| 99久久国产主播综合精品 | 国产香蕉久久精品综合网| 国产综合久久久久| 精品国产日韩久久亚洲| 久久精品视屏| 久久精品国产亚洲AV高清热| 日本精品一区二区久久久| 国产美女久久久| 亚洲国产精品18久久久久久| 2020最新久久久视精品爱| 无码伊人66久久大杳蕉网站谷歌| 亚洲国产另类久久久精品小说 | 日本免费一区二区久久人人澡| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 香蕉久久夜色精品国产尤物| 午夜欧美精品久久久久久久| 久久人人爽人人澡人人高潮AV| 久久精品国产亚洲av高清漫画 | 国产产无码乱码精品久久鸭| 亚洲婷婷国产精品电影人久久| 国产精品久久久久AV福利动漫| 99久久综合狠狠综合久久| 久久久久久毛片免费播放| 国产A级毛片久久久精品毛片| 人人狠狠综合久久亚洲婷婷| 色婷婷综合久久久中文字幕| 久久天天躁夜夜躁狠狠躁2022| 久久精品无码av|