skia入门例子(在vs中怎么创建一个skia例子),傻瓜式说明,简单易懂

这次之前需要编译过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版本,则可以按下图修改后再次编译就可以了



其中第一幅图的代码为

 _HAS_ITERATOR_DEBUGGING=0;
_ITERATOR_DEBUG_LEVEL=0;
_CONSOLE; 

运行完后可以去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小例子之文字排版(https://blog.csdn.net/weixin_42001089/article/details/80368760)

最后开始skia之旅吧!!!!!!!!!!!

就写到这吧,时间不早了,吃夜宵去了,饿


  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值