2310x86版本skia的第一个示例

我也懒得去编译了(我也编译不来),要下载的东西太多,而skia-build项目中没有x86版本.

所以从这里下载了别人的,编译方法.

下载后,要改两个地方:

1,SkRect文件中使用了max/min,删除相应的std::

2,SkTFitsIn.h文件中的std::numeric_limits<typename sk_strip_enum<D>::type>::max要加个括号,否则编译不过,这里.

然后按这里写一个示例.

两个文件:

1,前面的

cpp 复制代码
#include <Windows.h>

#include "include/core/SkCanvas.h"
#include "include/core/SkBitmap.h"
#include "include/core/SkPaint.h"
#include "include/core/SkTypeface.h"
#include "include/core/SkFont.h"
#include "include/codec/SkCodec.h"
#include "include/core/SkImageEncoder.h"

// Skia依赖DirectX的一些库,复制即可
#include <d3d12.h>
#pragma comment(lib, "D3D12.lib")
#pragma comment(lib, "skia.lib")
#pragma comment(lib, "user32.lib")
#include <d3dcompiler.h>
#pragma comment(lib, "d3dcompiler.lib")
#pragma comment(lib, "Opengl32.lib")
#ifdef _DEBUG
#include <dxgi1_3.h>
#pragma comment(lib, "DXGI.lib")
#endif // _DEBUG

2,画图:

cpp 复制代码
#undef max
#undef min
#include <iostream>
#include "sk0.cpp"

int main()
{
    SkBitmap bitmap;  //创建位图设备
    SkImageInfo imageInfo = SkImageInfo::Make(480, 320, kBGRA_8888_SkColorType, kPremul_SkAlphaType);  //设置位图信息
    bitmap.allocPixels(imageInfo, imageInfo.minRowBytes());  //为位图设备绑定信息和分配内存

    SkCanvas canvas(bitmap);  //创建画布
    SkPaint paint;  //创建画笔
    canvas.clear(SkColorSetARGB(0xFF, 0x14, 0x14, 0x14));
        //将画布清空并填充一种颜色,注意这里是ARGB,Alpha通道值在第一位,同时可以直接用16进制数表示,例如上面这个颜色值可以表示为0xFF141414
    paint.setColor(SK_ColorWHITE);
        //设置画笔颜色

    SkFont font;  //创建字体设备
    font.setSize(64);  //设置字体尺寸
    font.setTypeface(SkTypeface::MakeFromName("Microsoft YaHei", SkFontStyle::Normal()));  //设置字体
    SkString text("Hello, Skia!");
    canvas.drawSimpleText(text.c_str(), text.size(), SkTextEncoding::kUTF8, 0, 64, font, paint);  //在画布上绘制字体

    SkFILEWStream stream("D:\\test.png");  //创建文件输出流
    SkEncodeImage(&stream, bitmap, SkEncodedImageFormat::kPNG, 100);  //将位图数据按照指定格式编码并输出到文件中

    return 0;
}

xmake.lua内容为:

cpp 复制代码
add_rules("mode.release")
target("b")
    add_files("b.cpp")
    add_includedirs(".")
    set_targetdir('.')

然后xmake编译,得到b.exe,然后运行,就成功了.

相关推荐
会周易的程序员2 小时前
5Draft(五帝)测试报告
服务器·c++·分布式·raft·共识算法·共识·算力服务器
UIU1142 小时前
scanf与cout的误区:探究其内部的机制
c++·学习·c#·scanf
闻缺陷则喜何志丹2 小时前
【栈 运算系统】P3719 [AHOI2017初中组] rexp|普及+
c++·算法··洛谷·运算系统
bnmoel2 小时前
C++ 基础入门篇(一):命名空间,输入&输出,缺省参数,函数重载
c++·函数重载·语法·命名空间·缺省参数
Zixhy3 小时前
多点巡检机器人项目技术总结
linux·c++·机器人·自动驾驶
Pointer Pursuit4 小时前
C++11特性(二)
前端·c++·算法
tudousisi2225 小时前
CSP 第3题训练 Day 5|CSP202509C HTTP 头信息|Blog A
c++
闻缺陷则喜何志丹6 小时前
【动态规划】P10726 [GESP202406 八级] 空间跳跃|普及+
c++·算法·动态规划·洛谷
Chester_19996 小时前
CSP202312C.树上搜索
开发语言·数据结构·c++·蓝桥杯·stl
见叶之秋8 小时前
【C++】String类的使用(含模拟实现)
java·开发语言·c++