OpenVG draw circle

99 Views Asked by At

My hardware have two Layers, I draw the background at the layer0 I draw a circle like this:circle (a color circle, other area is transparent.) at the layer1

My code is :

vgPaintPattern(maskPaint, maskImage);
vgSetPaint( maskPaint, VG_FILL_PATH );  
vgSeti(VG_MATRIX_MODE, VG_MATRIX_FILL_PAINT_TO_USER);
vgLoadIdentity();
vgTranslate (-HALO_W / 2, -HALO_W / 2);

vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
vgLoadIdentity();
vgTranslate (pointer_x, floater_y);

vgSeti ( VG_FILL_RULE, VG_NON_ZERO );
path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, 
     VG_PATH_CAPABILITY_ALL);
vguArc( path, 0.0f, 0.0f, HALO_W, HALO_W, startAngle, angleExtent, VGU_ARC_PIE  );
vgRemovePathCapabilities(path, VG_PATH_CAPABILITY_APPEND_FROM | VG_PATH_CAPABILITY_APPEND_TO |
                                           VG_PATH_CAPABILITY_MODIFY | 
                                           VG_PATH_CAPABILITY_TRANSFORM_FROM |
                                           VG_PATH_CAPABILITY_TRANSFORM_TO | 
                                           VG_PATH_CAPABILITY_INTERPOLATE_FROM |
                                           VG_PATH_CAPABILITY_INTERPOLATE_TO);
vgDrawPath( path, VG_FILL_PATH );

vgDestroyPath( path );  

vgSetPaint (VG_INVALID_HANDLE, VG_FILL_PATH);
vgPaintPattern(maskPaint, VG_INVALID_HANDLE);

but the result is this: result the center part is black not transparent. How did I do?

0

There are 0 best solutions below