skia入门

news/2024/11/29 16:32:48/
	SkBitmap  bmp;bmp.setConfig(SkBitmap::kARGB_8888_Config, rect.Width(), rect.Height());bmp.allocPixels();SkCanvas canvas(bmp);SkPaint paint;SkRect rect;SkPaint::Style oldStyle;//画矩形
// 	rect.setXYWH(100, 100, 200, 200);
// 	paint.setColor(SK_ColorRED);
// 	paint.setStrokeWidth(1);
// 	oldStyle = paint.getStyle();
// 	//kStroke_Style,画边框
// 	//kFill_Style,填充
// 	paint.setStyle(SkPaint::kStroke_Style);
// 	canvas.drawRect(rect, paint);
// 	paint.setStyle(oldStyle);//画线
// 	paint.setStrokeWidth(1);
// 	paint.setColor(SK_ColorBLACK);
// 	paint.setAntiAlias(true);//抗锯齿
// 	canvas.drawLine(0, 0, 300, 100, paint);//画贝塞尔曲线
// 	SkPath path;
// 	SkPoint pt[4];
// 
// 	pt[0].set(100, 100);
// 	pt[1].set(200, 80);
// 	pt[2].set(300, 80);
// 	pt[3].set(400, 100);
// 	path.moveTo(pt[0]);
// 	//二次贝塞尔曲线
// 	//path.quadTo(pt1, pt2);
// 	//三次贝塞尔曲线
// 	path.cubicTo(pt[1], pt[2], pt[3]);
// 	paint.setAntiAlias(true);//抗锯齿
// 	paint.setStyle(SkPaint::kStroke_Style);
// 	paint.setStrokeWidth(1);
// 	paint.setColor(SK_ColorBLACK);
// 	canvas.drawPath(path, paint);
// 	//贝塞尔点
// 	paint.setColor(SK_ColorRED);
// 	canvas.drawCircle(pt[0].x(), pt[0].y(), 4, paint);
// 	canvas.drawCircle(pt[1].x(), pt[1].y(), 4, paint);
// 	canvas.drawCircle(pt[2].x(), pt[2].y(), 4, paint);
// 	canvas.drawCircle(pt[3].x(), pt[3].y(), 4, paint);//画椭圆
// 	rect.setXYWH(100, 100, 300, 200);
// 	paint.setColor(SK_ColorBLUE);
// 	paint.setStyle(SkPaint::kFill_Style);//填充
// 	paint.setAntiAlias(true);//抗锯齿
// 	canvas.drawOval(rect, paint);//渐变
// 	SkPoint pts[2] = {100, 0, 400, 0};
// 	SkColor colors[3] = {SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE};//渐变颜色
// 	SkScalar pos[3] = {0, 0.2, 1.0};//颜色过渡率
// 	int count = SK_ARRAY_COUNT(colors);
// 	SkShader* shader = SkGradientShader::CreateLinear(pts,
// 		colors,
// 		pos,
// 		count,
// 		SkShader::kMirror_TileMode);
// 	//shader对象控制权交给paint
// 	paint.setShader(shader);
// 	shader->unref();
// 	rect.setXYWH(100, 100, 300, 200);
// 	canvas.drawRect(rect, paint);
// 	paint.setShader(NULL);//释放shader//画点集合
// 	SkPoint pts[] = {{100, 100},
// 	{200, 100},
// 	{200, 200},
// 	{100, 200}};
// 	int count = SK_ARRAY_COUNT(pts);
// 	SkCanvas::PointMode mode = SkCanvas::kPolygon_PointMode;
// 	paint.setColor(SK_ColorBLUE);
// 	paint.setStrokeWidth(1);
// 	canvas.drawPoints(mode,
// 		count,
// 		pts,
// 		paint);//画路径
// 	SkPath path;
// 
// 	path.addRect(0, 0, 100, 100);
// 	path.addCircle(100, 100, 50);
// 	paint.setColor(SK_ColorRED);
// 	//kStroke_Style,路径轮廓,
// 	//kFill_Style,填充模式
// 	paint.setStyle(SkPaint::kStroke_Style);
// 	canvas.drawPath(path, paint);//画文字
// 	wstring text = L"hello Skia!";
// 	paint.setColor(SK_ColorRED);
// 	paint.setTextEncoding(SkPaint::kUTF16_TextEncoding);//UNICODE编码
// 	paint.setTextSize(30);
// 	paint.setAntiAlias(true);//抗锯齿
// 	paint.setStyle(SkPaint::kFill_Style);
// 	canvas.drawText(text.c_str(), text.length() * 2, 100, 100, paint);//(100, 100)左下点坐标
// 	//得到绘画文字的高度和宽度
// 	SkScalar width = paint.measureText(text.c_str(), text.length() * 2);
// 	SkScalar height = paint.getTextSize();
// 	rect.setXYWH(100, 100, width, height);
// 	paint.setStyle(SkPaint::kStroke_Style);
// 	canvas.drawRect(rect, paint);
// 	paint.setStyle(SkPaint::kFill_Style);//文字旋转
//	wstring text = L"123456";
//	SkPath path;
//	SkPoint pts[2];
//	pts[0].set(200, 200);
//	pts[1].set(200, 100);
//	path.addPoly(pts, 2, false);
//	paint.setStyle(SkPaint::kStroke_Style);//轮廓
//	paint.setColor(SK_ColorRED);
//	canvas.drawPath(path, paint);//画路径
//	paint.setAntiAlias(true);//平滑
//	paint.setStyle(SkPaint::kFill_Style);//填充
//	paint.setTextSize(20);
//	paint.setTextEncoding(SkPaint::kUTF16_TextEncoding);//UNICODE编码
//	paint.setColor(SK_ColorBLACK);
//	canvas.drawTextOnPath(text.c_str(), text.size() * 2, path, NULL, paint);//画竖直文字//路径
// 	SkPath path[2];
// 	SkPoint pts[4];
// 	SkMatrix mx;
// 
// 	pts[0].set(50, 50);
// 	pts[1].set(75, 25);
// 	pts[2].set(125, 25);
// 	pts[3].set(150, 50);
// 	path[0].addPoly(pts, 4, true);
// 	mx.reset();
//  mx.setTranslateX(100);//X坐标平移100
// 	path[1].addPoly(pts, 4, true);
// 	path[0].addPath(path[1], mx);//添加新路径
// 	canvas.drawPath(path[0], paint);//设置剪切区
// 	SkPath pa[2];
// 	SkPoint pts[4];
// 
// 	pts[0].set(100, 100);
// 	pts[1].set(200, 100);
// 	pts[2].set(200, 200);
// 	pts[3].set(100, 200);
// 	pa[0].addPoly(pts, 4, true);
// 	pts[0].set(150, 125);
// 	pts[1].set(250, 125);
// 	pts[2].set(250, 175);
// 	pts[3].set(150, 175);
// 	pa[1].addPoly(pts, 4, true);
// 
// 	paint.setColor(SK_ColorBLUE);
// 	canvas.save(SkCanvas::kClip_SaveFlag);//保存剪切区
// 	canvas.clipPath(pa[0], SkRegion::kReplace_Op);
// 	canvas.clipPath(pa[1], SkRegion::kXOR_Op);
// 	canvas.drawPath(pa[0], paint);
// 	canvas.drawPath(pa[1], paint);
// 	canvas.restore();//还原剪切区//绕中心点旋转矩形
// 	SkPoint ptCenter;//	paint.setAntiAlias(true);
//	paint.setStyle(SkPaint::kStroke_Style);
//	paint.setColor(SK_ColorBLACK);
//	paint.setStrokeWidth(1.0f);//	rect.setXYWH(50, 50, 100, 50);
//	ptCenter.fX = rect.centerX();
//	ptCenter.fY = rect.centerY();//	canvas.save(SkCanvas::kMatrix_SaveFlag);
//	canvas.translate(ptCenter.fX, ptCenter.fY);//平移坐标系到矩形中心点
//	canvas.rotate(30.0f);
//	rect.offset(-ptCenter.fX, -ptCenter.fY);//将矩形中心点平移到原点(0,0)
//	canvas.drawRect(rect, paint);//绘画旋转后的矩形
//	canvas.restore();//	rect.offset(ptCenter.fX, ptCenter.fY);
//	paint.setColor(SK_ColorRED);
//	canvas.drawRect(rect, paint);


http://www.ppmy.cn/news/481424.html

相关文章

asdasdsa

在这里插入代码片List itemList itemasdsadsadsadsasadsadsadasdassdsaasdsadasdsadsadsadasdsadsadasdsadasdasdsadsadsadsadsadsadsadasdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsada 72.sdsdsdsada

SA+OOA

SAOOA 何志丹 许多书刊对面向对象大加赞美,好象面向对象大有“一统天下”之势。事实上我国软件业是“群雄割据”,其中最有实力的是面向对象的分析(ooa)和结构化分析(sa).这一点可以从2001年系统分析员考试…

Rasa

Rasa NLU是一种开源自然语言处理工具,用于聊天机器人中的意图分类和实体提取;主要是理解用户意图,配合rasa_core使用可以实现AI对话。 参考文献 Rasa介绍 对话系统、产品与技术by清华 Rasa开发使用 Rasa_NLU及Rasa_Core模型训练与测试by冰蓝 …

ALSA学习

一 . 介绍 ALSA 标准是一个先进的 linux 声音体系。它包含内核驱动集合, API 库和工具对 Linux 声音进行支持。 ALSA 包含一系列内核驱动对不同的声卡进行支持,还提供了 libasound 的 API 库。用这些进行写程序不需要打开设备等操作,所以编程…

AS ASasAS

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

ASGI介绍

ASGI(Asynchronous Server Gateway Interface, 异步服务器网关接口) 是WSGI的传人,为了规范支持异步的Python网络服务器,框架和应用之间的通信而定制。 相较于WSGI定义了同步的Python应用间的通信规范,ASGI同时囊括了同步和异步应用的通信规范…

ALSA ASOC

1 ALSA 1.1 架构简述 ALSA是Advanced Linux Sound Architecture 的缩写, 官网 : http://www.alsa-project.org. 在内核设备驱动层, ALSA提供了alsa-driver. 同时在应用层, ALSA为我们提供了alsa-lib, 应用程序只要调用alsa-lib提供的API, 即可以完成对底层音频硬件的…

SABER认证流程,SABER和SASO什么关系,

沙特Saber认证系统详解 一、什么是SABER认证? 1.SABER认证,是指针对非沙特本土企业(即出口至沙特的企业)进行的符合性认证评估计划,因此对于中国出口企业而言,需要关注的是SABER认证计划。 2.SALEEM与SABER是新推出的基于原有…