这次之前需要编译过skia,怎么编译可以看https://blog.csdn.net/weixin_42001089/article/details/80320424
接下来就一步步看看进行吧:
打开vs,新建工程如下:文件名和位置可以自行选择
接着点击下一步
在跳出的框中选择应用台控制
点击完成,生成结果应该如下:
接下来就是要将skia 一些头文件添加进来了,这些头文件在skia/include,如我的具体是在:
怎么具体添加呢?如下图
点击后会出来如下:按图进行操作
接下来就是添加编译的包了(我的具体路径是):
所以具体添加操作就是:
以上两步完成以后就可以了,
将下面代码复制到主函数中
#include "stdafx.h" #include "SkBitmap.h" #include "SkDevice.h" #include "SkPaint.h" #include "SkRect.h" #include "SkImageEncoder.h" #include "SkTypeface.h" #include "SkCanvas.h" const char *pText = "Hello world!"; int main(int argc, _TCHAR* argv[]) { const int width = 1024; const int height = 768; SkBitmap bitmap; SkImageInfo ii = SkImageInfo::Make(480, 320, kBGRA_8888_SkColorType, kPremul_SkAlphaType); bitmap.allocPixels(ii, ii.minRowBytes()); SkPaint paint; paint.setStyle(SkPaint::kStroke_Style); paint.setColor(0xff1f78b4); paint.setStrokeWidth(8); bitmap.allocPixels(); SkCanvas canvas(bitmap); canvas.clear(0x00000000);// 背景为透明色 { SkRect rc; rc.fLeft = 123; rc.fTop = 0; rc.fRight = 222; rc.fBottom = 50; canvas.drawOval(rc, paint); } { paint.setARGB(255, 255, 0, 0); paint.setTextSize(50); canvas.drawText(pText, strlen(pText), 500, 500, paint); } { paint.setColor(SK_ColorYELLOW); canvas.drawCircle(100, 100, 50, paint); } { SkPaint paint1, paint2, paint3; paint1.setTextSize(64.0f); paint1.setAntiAlias(true); paint1.setColor(0xff4281A4); paint1.setStyle(SkPaint::kFill_Style); paint2.setTextSize(64.f); paint2.setAntiAlias(true); paint2.setColor(0xff9CAFB7); paint2.setStyle(SkPaint::kStroke_Style); paint2.setStrokeWidth(SkIntToScalar(3)); paint3.setTextSize(64.0f); paint3.setAntiAlias(true); paint3.setColor(0xffE6B89C); paint3.setTextScaleX(SkFloatToScalar(1.5f)); const char text[] = "i love you"; canvas.drawText(text, strlen(text), 200.0f, 64.0f, paint1); canvas.drawText(text, strlen(text), 200.0f, 144.0f, paint2); canvas.drawText(text, strlen(text), 200.0f, 224.0f, paint3); } SkFILEWStream stream("D:\\1bc.jpg"); SkEncodeImage(&stream,bitmap,SkEncodedImageFormat::kPNG,100); return 0; }
然后点击build下的第一个或直接点击F7,有时会报错为:如下
那么解决的办法就是这里应该选:
再次编译就好了,有时编译的时候还会报错即:
这应该就是Dubug版本的问题了,试着改成Release版本编译一下应该能通过,或者如果非要用Dubug版本,则可以按下图修改后再次编译就可以了
其中第一幅图的代码为
运行完后可以去D盘下看到有一个图片打开效果为:
到此教程完成了!!!!!
关于代码两点说明(也可以不必看,直接复制代码就可以了):
(1)我之前去搜网上别人一些例子代码,都是
SkBitmap bitmap;
bitmap.setConfig(SkBitmap::kARGB_8888_Config,320,240);
其中总是在setConfig报错,说什么SkBitmap类中没有setConfig,去看了一下SkBitmap类,纳尼?还真没有,估计这是老版本的问题吧,于是果断换用SkImageInfo这种方法
(2)网上大多数最后都是SkImageEncoder::EncodeFile("testSkia.png", bitmap,SkImageEncoder::kPNG_Type,100);
什么的,可是这里也报错,说没有SkImageEncoder,看了一下相关头文件即 "SkImageEncoder.h",其中类居然是SkEncodeImage,看见没有?这里SkImageEncoder和SkEncodeImage关键字居然相反,而且参数也略有不同,比如第一个参数必须为地址,SkEncodedImageFormat格式也有所变啥的,一番改正之后终于可以了!!!
最后开始skia之旅吧!!!!!!!!!!!
就写到这吧,时间不早了,吃夜宵去了,饿