zoukankan      html  css  js  c++  java
  • android 通过canvas旋转 绘制文字 竖直等不同方向的显示

    效果如下:

    主体代码如下:

    package com.free.chart;

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;

    public class DrawTextStudy extends SurfaceView implements SurfaceHolder.Callback {

        SurfaceHolder holder;
        public DrawTextStudy(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
            holder = this.getHolder();
            holder.addCallback(this);
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                int height) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            // TODO Auto-generated method stub
            new Thread(new MyThread()).start();
        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            // TODO Auto-generated method stub
            
        }
        
        void drawText(Canvas canvas ,String text , float x ,float y,Paint paint ,float angle){
            if(angle != 0){
                canvas.rotate(angle, x, y); 
            }
            canvas.drawText(text, x, y, paint);
            if(angle != 0){
                canvas.rotate(-angle, x, y); 
            }
        }
        
        class MyThread implements Runnable{

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Canvas canvas = null;    
                try{                        
                    canvas = holder.lockCanvas();
                    Paint paint = new Paint();                
                    paint.setColor(Color.WHITE);
                    paint.setTextSize(20);                
                    canvas.drawLine(100, 100, 100, 400, paint);
                    drawText(canvas,"Hello", 80, 200, paint,-90);        
                    
                    paint.setColor(Color.RED);
                    paint.setTextSize(40);
                    drawText(canvas,"free", 150, 180, paint,-45);        
                    
                    paint.setColor(Color.BLUE);
                    drawText(canvas,"World", 150, 80, paint,0);
                    canvas.drawLine(100, 100, 400, 100, paint);
                    
                } catch(Exception e){
                    
                } finally {
                    holder.unlockCanvasAndPost(canvas);
                }        
                
            }        
        }
        

    }

    activity调用

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            setContentView(new DrawTextStudy(this));
    }
  • 相关阅读:
    C#自定义控件之数字文本框
    C# 校验字符串是否为IP格式
    C# winform 解决加载闪烁,背景透明等问题
    SQL Server 数据类型
    C#自定义控件之下拉列表框
    C#将 byte[ ] 转换为对应的struct
    AFNetworking图片上传
    xfs删除oracle数据文件恢复
    揭秘String类型背后的故事——带你领略汇编语言魅力
    [批处理]截取for命令里面的变量%%i
  • 原文地址:https://www.cnblogs.com/freeliver54/p/2531085.html
Copyright © 2011-2022 走看看