zoukankan      html  css  js  c++  java
  • Skia翻页效果的改写感谢何明桂的分享

    何明桂:Android 实现书籍翻页效果----完结篇 http://blog.csdn.net/hmg25/article/details/6342539


    从工作开始接触的就是界面,但只是用GDI画画图片。对于一些复杂的特效,尤其像翻页这样的,感觉很无路。

    看了何明桂的翻页效果原理篇后,发现自己实在是太笨了,无法将表面的现象分析成自己理解的可以实现的代码,只是一直在问怎么办。

    相信很多人看过 原理篇 后,会有同样的感觉。

    原理篇:http://blog.csdn.net/hmg25/article/details/6306479

    星期天将何明桂的java代码 主要是PageWidget.java用C++改写了下

    可以得出上图的效果。

    前些天开始学习用skia,很多不懂,看到何明桂的翻页效果,移植下。

    现在还有好多问题:

    1.小细节,这个怎么点都是从左上角开始翻页。

    2.锯齿很严重

    3.最严重的,估计很难弄 ,阴影的实现,我看了下GradientDrawable这个类在android里是用java实现,不是调用的Skia的C++接口。

      (不知道怎么办,打算用C++照着android里的源码写下,不知道能不能行。)

    希望我能将问题解决掉,与大家分享。

    2011-11-22/09:07:01

    又找到一个翻页效果的例子,http://www.iteye.com/topic/1112526 

    这个用LinearGradient 处理阴影。LinearGradient 继承于Shader.Shader也是native 实现。

    19
    /***
    20
     * Shader is the based class for objects that return horizontal spans of colors
    21
     * during drawing. A subclass of Shader is installed in a Paint calling
    22
     * paint.setShader(shader). After that any object (other than a bitmap) that is
    23
     * drawn with that paint will get its color(s) from the shader.
    24
     */
    

      mypaint.setShader(LinearGradient),

      之后使用mypaint绘画的对象都会使用LinearGradient

     
    2011-11-22/15:00:11
    在所有使用GradientDrawable的地方用SkShader,
    还不会设置CreateLinear的参数,胡来弄了个,效果很差,关键是速度奇慢。不知道会不会悲剧。
    	所有的地方都使用这个SkShader:
         SkPoint pt[2];
    	pt[0].set(0,0);
    	pt[1].set(50,50);
    	SkColor color[] = {0x333333,0xb0333333};
    	mFolderShadowDrawableRL = SkGradientShader::CreateLinear(pt,color,NULL,2,SkShader::TileMode::kClamp_TileMode);
    

      使用如下

    	//mBackShadowDrawable.setBounds(leftx, (int) mBezierStart1.fY, rightx,(int)(mMaxLength + mBezierStart1.fY));
    	//mBackShadowDrawable.draw(canvas);
    改为:
    	SkPaint paint;
    	paint.setShader(mBackShadowDrawable);
    	canvas->drawRectCoords(leftx, (int) mBezierStart1.fY, rightx,(int)(mMaxLength + mBezierStart1.fY),paint);
    

      弱到不行的效果:

    ezhong的博客园:http://www.cnblogs.com/ezhong/

  • 相关阅读:
    [c/c++] programming之路(13)、函数
    [c/c++] programming之路(12)、循环结构
    opencv学习之路(18)、霍夫变换
    [c/c++] programming之路(11)、顺序分支
    opencv学习之路(17)、边缘检测
    opencv学习之路(16)、膨胀腐蚀应用之走迷宫
    [c/c++] programming之路(10)、格式符后续
    opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)
    opencv学习之路(14)、形态学之膨胀腐蚀
    [c/c++] programming之路(9)、运算优先级
  • 原文地址:https://www.cnblogs.com/ezhong/p/2257040.html
Copyright © 2011-2022 走看看