protected override void Draw() { //VG.vgSetfv(VGParamType.VG_CLEAR_COLOR, 4, new[] { 0.0f, 1.0f, 0.0f, 0.5f }); //VG.vgClear(0, 0, Width, Height); //VG.vgFinish(); VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); VG.vgLoadIdentity(); #region draw text if (Text == null) { return; } VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, FontColor.Value); VG.vgSetPaint(mPaint, VGPaintMode.VG_FILL_PATH); float[] glyphOrigin = { 0.0f, 0.0f }; // set glyph matrices VG.vgSetfv(VGParamType.VG_GLYPH_ORIGIN, 2, glyphOrigin); VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_GLYPH_USER_TO_SURFACE); VG.vgLoadIdentity(); var widthText = (TextWidth > Width) ? Width : TextWidth; switch (TextAlign) { case Align.Left: VG.vgTranslate(TextOffset.X, TextOffset.Y); break; case Align.Center: VG.vgTranslate((Width - widthText + TextOffset.X) / 2f, TextOffset.Y); break; case Align.Right: VG.vgTranslate((Width - widthText - TextOffset.X), TextOffset.Y); break; } VG.vgTranslate(RotateCenter.X, RotateCenter.Y); VG.vgRotate(mRotate); VG.vgTranslate(-RotateCenter.X, -RotateCenter.Y); VG.vgScale(FontSize, FontSize); mFontRender.RenderText(Text); VG.vgFinish(); #endregion }