Canvas Path 绘制柱体

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        ImageView drawingImageView;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);

            drawingImageView = (ImageView)rootView.findViewById(R.id.drawingImageView);

            int width = (int) getActivity().getWindowManager().getDefaultDisplay().getWidth();
            int height = (int)getActivity().getWindowManager().getDefaultDisplay().getHeight();

            Bitmap bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);

            Canvas canvas = new Canvas(bitmap);
            drawingImageView.setImageBitmap(bitmap);

            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.GREEN);

            Path p = new Path();
            float offsetX = 30;
            float offsetY = 30;

            //正面
            p.moveTo(0.75f, 60f);
            p.lineTo(0.75f, 229.1f);
            p.lineTo(92.5f, 229.1f);
            p.lineTo(92.5f, 60f);
            p.lineTo(0.75f, 60f);
            canvas.drawPath(p, paint);

            //右侧面
            p.reset();
            p.moveTo(92.5f, 60f);
            p.lineTo(92.5f, 229.1f);
            p.lineTo(92.5f+offsetX, 229.1f-offsetY);
            p.lineTo(92.5f+offsetX, 60f-offsetY);
            p.lineTo(92.5f, 60f);
            canvas.drawPath(p, paint);

            //上面
            p.reset();
            p.moveTo(0.75f+offsetX, offsetY);
            p.lineTo(0.75f, 60f);
            p.lineTo(92.5f, 60f);
            p.lineTo(92.5f+offsetX, 60f-offsetY);
            p.lineTo(0.75f+offsetX, offsetY);
            canvas.drawPath(p, paint);

            //针对上面,绘制一个白色的菱形强化立体效果
            paint.reset();
            paint.setStyle(Style.STROKE);
            paint.setColor(Color.WHITE);

            p.reset();
            p.moveTo(0.75f+offsetX, offsetY);
            p.lineTo(0.75f, 60f);
            p.lineTo(92.5f, 60f);
            p.lineTo(92.5f+offsetX, 60f-offsetY);
            p.lineTo(0.75f+offsetX, offsetY);
            canvas.drawPath(p, paint);

            //针对右侧面,绘制一个白色菱形强化立体效果
            p.reset();
            p.moveTo(92.5f, 60f);
            p.lineTo(92.5f, 229.1f);
            p.lineTo(92.5f+offsetX, 229.1f-offsetY);
            p.lineTo(92.5f+offsetX, 60f-offsetY);
            p.lineTo(92.5f, 60f);
            canvas.drawPath(p, paint);

            return rootView;
        }
    }

}
时间: 2024-08-21 18:23:39

Canvas Path 绘制柱体的相关文章

WPF学习笔记(3):Path绘制命令zz

WPF的XAML提供了一系列功能强大.用法复杂的 mini-language 来描述可扩展应用程序标记语言 (XAML) 中的几何路径.如下所示: XAML <Canvas>   <Path Stroke="Black" Fill="Gray"     Data="M 10,100 C 10,300 300,-200 300,100" /> </Canvas> Command Name Description

利用Canvas进行绘制XY坐标系

首先来一发图 绘制XY的坐标主要是利用Canvas setLeft和setBottom功能(Canvas内置坐标的功能) 1.首先WPF中的坐标系都是从左到右,从上到下的 即左上角位置(0,0)点,所以XY的Canvas要以(RenderTransformOrigin="0,0",为中心点)进行270°旋转,然后平移<TranslateTransform Y="{Binding ActualHeight,ElementName=canvasInPath}"/&

HTML5在canvas中绘制复杂形状附效果截图

HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路径. closePath() : 通过绘制一条当前点到路径起点的线段来闭合形状. fill() , stroke() : 填充形状或绘制空心形状. moveTo() : 将当前点移动到点(x,y). lineTo() : 从当前点绘制一条直线到点(x,y). arc(x,y,r,sAngle,eAn

Android中使用SurfaceView和Canvas来绘制动画

其实每个View中都有Canvas可以用来绘制动画,只需要在这个View中重载onDraw()方法就可以,但是SurfaceView类是一个专门用来制动动画的类. Canvas(中文叫做"画布")就和HTML5中的canvas标签一样可以在一定区域内自由绘制图形.Canvas+SurfaceView制作的动画与View Animation和Property Animation这类动画比起来更加适合大量的集中播放的动画,比如游戏画面.相机的图像显示等. 因为SurfaceView通常会在

HTML5 在canvas中绘制矩形

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统,x坐标向右递增,y坐标向下递增. 使用绘图环境的矩形绘制函数来绘制矩形. fillRect(x,y,width,height) : 绘制一个实心的矩形. strokeRect(x,y,width,height) : 绘制一个空心的矩形. clearRect(x,y,width,height) : 清

[HTML5 Canvas学习]绘制矩形

1.使用strokeRect和fillRect方法绘制矩形 a.strokeRect是绘制一个不填充的矩形 b.fillRect是绘制一个填充的矩形 代码: <script> var canvas = document.getElementById('canvas'), context = canvas.getContext('2d'); context.lineJoin = 'round'; context.lineWidth = 20; context.strokeRect(10, 10,

canvas基础绘制-绚丽倒计时

效果图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ball</title> <script src="digit_1.js"></script> <script src="countdown.js"></

canvas基础绘制-绚丽时钟

效果图: 与canvas基础绘制-绚丽倒计时的代码差异: // var endTime = new Date();//const声明变量,不可修改,必须声明时赋值: // endTime.setTime( endTime.getTime() + 3600*1000);//当前时间向后一小时: var curShowTimeSeconds = 0; function getCurrentShowTimeSeconds() { var curTime = new Date();//获取目前时间: /

HTML5 在canvas中绘制复杂形状

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/32942667 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath()  : 开始绘制一个新路径. closePath()  : 通过绘制一条当前点到路径起点的线段来闭合形状. fill() , stroke()  : 填充形状或绘制空心形状. moveTo()  : 将当前点移动到点(x,y). lin