Chinaunix首页 | 论坛 | 博客
  • 博客访问: 804054
  • 博文数量: 117
  • 博客积分: 2583
  • 博客等级: 少校
  • 技术积分: 1953
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-06 22:58
个人简介

Coder

文章分类
文章存档

2013年(1)

2012年(10)

2011年(12)

2010年(77)

2009年(13)

2008年(4)

分类: C/C++

2012-01-05 23:14:42

Skia的资料还是比较难找到的。
Jserv 大牛的文章,http://blog.linux.org.tw/~jserv/archives/002095.html,相当难得,里面还有一个蛮不错的例子可供参考。但令人感到遗憾的是,将这份代码抄回来,并按照文中介绍的编译命令编译,没能成功。不知是因为系统环境不同,还是有其他原因。

因而尝试着对原代码及编译命令做一些小小的改动,如以下红色部分。

/* Simple vector graphics demo utilizing Skia toolkit.
 * Authored by Jim Huang
 */
 
#include "SkBitmap.h"
#include "SkDevice.h"
#include "SkPaint.h"
#include "SkRect.h"
#include "SkImageEncoder.h"

int main()
{
// Declare a raster bitmap, which has an integer width and height,
// and a format (config), and a pointer to the actual pixels.
// Bitmaps can be drawn into a SkCanvas, but they are also used to
// specify the target of a SkCanvas' drawing operations.
SkBitmap bitmap;
bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
bitmap.allocPixels();

// A Canvas encapsulates all of the state about drawing into a
// device (bitmap).  This includes a reference to the device itself,
// and a stack of matrix/clip values. For any given draw call (e.g.
// drawRect), the geometry of the object being drawn is transformed
// by the concatenation of all the matrices in the stack. The
// transformed geometry is clipped by the intersection of all of the
// clips in the stack.
SkCanvas canvas(bitmap);

// SkPaint class holds the style and color information about how to
// draw geometries, text and bitmaps.
SkPaint paint;

// SkIRect holds four 32 bit integer coordinates for a rectangle.

SkRect r;

paint.setARGB(255, 255, 0, 0);
r.set(25, 25, 145, 145);
canvas.drawRect(r, paint); /** Draw the specified rectangle using
      the specified paint. The rectangle
      will be filled or stroked based on
      the Style in the paint. */

paint.setARGB(255, 0, 255, 0);
r.offset(20, 20);
canvas.drawRect(r, paint);

paint.setARGB(255, 0, 0, 255);
r.offset(20, 20);
canvas.drawRect(r, paint);

// SkImageEncoder is the base class for encoding compressed images
// from a specific SkBitmap.
SkImageEncoder::EncodeFile("snapshot.png", bitmap,
SkImageEncoder::kPNG_Type,
/* Quality ranges from 0..100 */ 100);
return 0;
}



编译test代码:
g++ \
        -I./include \
        -I./include/core \
        -I./include/images \
        -I./include/config \
        -Wall -o test-skia test-skia.c \
         out/src/images/SkImageDecoder_libpng.o out/libskia.a \
        -lpng -lpthread -lfreetype -g
阅读(4256) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

kangear2014-08-20 16:24:10

你这个也相当不错了。