2310x86版本skia的第一个示例

2023-10-23 22:36

本文主要是介绍2310x86版本skia的第一个示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我也懒得去编译了(我也编译不来),要下载的东西太多,而skia-build项目中没有x86版本.
所以从这里下载了别人的,编译方法.
下载后,要改两个地方:
1,SkRect文件中使用了max/min,删除相应的std::
2,SkTFitsIn.h文件中的std::numeric_limits<typename sk_strip_enum<D>::type>::max要加个括号,否则编译不过,这里.

然后按这里写一个示例.
两个文件:
1,前面的

#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,画图:

#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进制数表示,例如上面这个颜色值可以表示为0xFF141414paint.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内容为:

add_rules("mode.release")
target("b")add_files("b.cpp")add_includedirs(".")set_targetdir('.')

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

这篇关于2310x86版本skia的第一个示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/270884

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交