Android : 画布的使用 简单应用

news2025/1/20 10:48:16

示例图:

MyView.java:

package com.example.demo;

import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

import com.example.myoomtest.R;

public class MyView extends View {

    public MyView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
//        super.onDraw(canvas);
        //画笔
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        //设置画笔的风格,如 Style.FILL(实心)、
        // Style.FILL_AND_STROKE(同时显示实心和空心)或 Style.STROKE(空心)。
        paint.setStyle(Paint.Style.FILL);
        //设置空心 边框 宽度
        paint.setStrokeWidth(20.0f);

        //在画布上画条线
        /***
         * xxxxxx
         Y 000000
         Y 000000
         Y 000000
         * */
        canvas.drawLine(0,50,500,50,paint);//画一条直线
        canvas.drawLine(100,0,100,200,paint);//画一条竖线
        canvas.drawLine(300,0,600,200,paint);//画一条斜线

        Paint paint2 = new Paint();
        paint2.setStyle(Paint.Style.STROKE);//(空心)
        paint2.setStrokeWidth(10);//边框大小
        paint2.setARGB(100,120,255,100);
        /**
         * 画矩形 rect
         * */
        canvas.drawRect(100,300,300,500,paint2);


        Paint paint3 = new Paint();
        paint3.setStyle(Paint.Style.STROKE);//(空心)
        paint3.setStrokeWidth(10);//边框线大小
        paint3.setARGB(100,120,255,100);
        /**
         * x , y  位置
         * 圆的 半径
         * 画圆形 circle
         * */
        canvas.drawCircle(600f,600f,60f,paint3);
        canvas.drawCircle(700f,700f,60f,paint);


        /**画文字
         * 基准线
         * */
        Paint paint4 = new Paint();
        paint4.setARGB(100,120,255,0);
        paint4.setTextSize(200);//文字大小
        paint4.setStrokeWidth(10);//边框线大小
        //基准线
        canvas.drawLine(0,1000,1000,1000,paint4);
        canvas.drawText("appblmqq",20,1000,paint4);

        /**
         * 绘制图片到画布
         * */
        Paint paint6 = new Paint();
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.kk),200,1200,paint6);
    }


}

MainActivity.java

public class MainActivity extends AppCompatActivity {

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

        setContentView(new MyView(this));
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1339809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node-red:modbus协议数据格式转换

node-red:MODBUS协议数据格式转换 一、32word无符号转换1.1 写操作1.2 读操作 二、字符串转换2.1 字符串写操作2.2 字符串读操作 三、有符号整数转换3.1 有符号16word转换3.1.1 负数 读 操作3.1.2 负数 写 操作 3.2 有符号32word转换 源码 本文将描述通过node-red采…

2024年【北京市安全员-B证】证考试及北京市安全员-B证模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2024年【北京市安全员-B证】证考试及北京市安全员-B证模拟考试题库,包含北京市安全员-B证证考试答案和解析及北京市安全员-B证模拟考试题库练习。安全生产模拟考试一点通结合国家北京市安全员-B证考试最新…

本地部署 text-generation-webui

本地部署 text-generation-webui 0. 背景1. text-generation-webui 介绍2. 克隆代码3. 创建虚拟环境4. 安装 pytorch5. 安装 CUDA 运行时库6. 安装依赖库7. 启动 Web UI8. 访问 Web UI9. OpenAI 兼容 API 0. 背景 一直喜欢用 FastChat 本地部署大语言模型,今天试一…

GitOps实践指南:GitOps能为我们带来什么?

Git,作为开发过程中的核心工具,提供了强大的版本控制功能。即便在写代码的时候稍微手抖一下,我们也能通过 Git 的差异对比(diff)轻松追踪到庞大工程中的问题,确保代码的准确与可靠。这种无与伦比的自省能力…

python如何通过日志分析加入黑名单

python通过日志分析加入黑名单 监控nginx日志,若有人攻击,则加入黑名单,操作步骤如下: 1.读取日志文件 2.分隔文件,取出ip 3.将取出的ip放入list,然后判读ip的次数 4.若超过设定的次数,则加…

面向对象(高级)知识点强势总结!!!

文章目录 一、知识点复习1-关键字:static1、知识点2、重点 2-单例模式(或单子模式)1、知识点2、重点 3-理解main()方法1、知识点2、重点 4-类的成员之四:代码块1、知识点2、重点 5-关键字:final1、知识点2、重点 6-关键…

Python 网络编程之搭建简易服务器和客户端

用Python搭建简易的CS架构并通信 文章目录 用Python搭建简易的CS架构并通信前言一、基本结构二、代码编写1.服务器端2.客户端 三、效果展示总结 前言 本文主要是用Python写一个CS架构的东西,包括服务器和客户端。程序运行后在客户端输入消息,服务器端会…

ArcGIS Pro中Conda环境的Scripts文件解读

Scripts中包含的文件如下 1. propy.bat 用于在 ArcGIS Pro 外部运行 Python 脚本(扩展名为 .py 的文件)。使用的conda环境是与ArcGIS pro环境同步。propy.bat原理是代替各自python环境下的python.exe,主要区别是propy.bat使用的是与Pro同的…

YOLOv8算法优化:解决YOLOv8无法打印计算量(GFLOPs)的问题点

💡💡💡本文内容:解决YOLOv8无法打印计算量的问题点 💡💡💡本文提供:1)训练阶段自动打印计算量;2)提供离线打印计算量的代码; 1.计算量介绍 FLOPS:注意S是大写,是 “每秒所执行的浮点运算次数”(floating-point operations per second)的缩写。它常被用…

JavaScript 工具库 | PrefixFree给CSS自动添加浏览器前缀

新版的CSS拥有多个新属性,而标准有没有统一,有的浏览器厂商为了吸引更多的开发者和用户,已经加入了最新的CSS属性支持,这其中包含了很多炫酷的功能,但是我们在使用的时候,不得不在属性前面添加这些浏览器的…

nodejs业务分层如何写后端接口

这里展示的是在node express 项目中的操作 ,数据库使用的是MongoDB,前期关于express和MongoDB的文章可访问: Nodejs后端express框架 server后端接口操作:通过路由匹配——>调用对应的 Controller——>进行 Service调用——&…

基于YOLOv8深度学习的45种交通标志智能检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

TCP的三次握手

TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。 TCP 可以看成是一种字节流,它…

强化学习与推荐系统结合

强化学习与推荐系统结合,是在智能体的学习过程中,会根据外部反馈信息,改变自身状态,在根据自身状态进行决策,就是行动反馈,状态更新,在行动的循环。 深度强化学习推荐系统框架是基于强化学习的…

【数据结构】顺序表与单链表的增删查改

文章目录 前言顺序表增删查改顺序表的定义与初始化增删查改操作测试代码完整代码 单链表的增删查改数据结构定义动态申请节点单链表的尾插和头插单链表的尾删和头删单链表的查找单链表的插入和删除销毁链表测试代码完整代码 总结 前言 在计算机编程领域,数据结构是…

力扣Hot100——柱状图中最大矩形(单调栈)

题目链接:https://leetcode.cn/problems/largest-rectangle-in-histogram/description/?envTypestudy-plan-v2&envIdtop-100-liked 经典的单调栈问题 思路:考虑单调递增栈,如果说我拿到的数字比栈顶来的要小,那么说明了我前…

geotool解析shp文件org.locationtech.jts.geom.Polygon报错问题

最近在研究利用geotool制作专题图的功能。geotool加载shp文件和sld样式文件,选然后导出图片,发现点没问题,面总会报: 网上搜到类似问题: GIS:shp文件解析相关_org.locationtech.jts.geom.polygon.getexteriorring(-CS…

搭建APP应用程序如何选择服务器

我经常收到许多关于如何搭建 APP 的询问。其中,如何选择服务器是许多初创企业和开发者经常面临的问题。带着这些问题我也通过一些科技手段收集整理了些知识,今天我就和大家来来探讨如何选择服务器,帮助您搭建一个稳定、高效、安全的 APP。 Ap…

javaEE -18(11000字 JavaScript入门 - 3)

一:事件 (高级) 1.1 注册事件(绑定事件) 给元素添加事件,称为注册事件或者绑定事件,注册事件有两种方式:传统方式和方法监听注册方式 传统注册方式 : 利用 on 开头的…

模式识别与机器学习-SVM(线性支持向量机)

线性支持向量机 线性支持向量机间隔距离学习的对偶算法算法:线性可分支持向量机学习算法线性可分支持向量机例子 谨以此博客作为复习期间的记录 线性支持向量机 在以上四条线中,都可以作为分割平面,误差率也都为0。但是那个分割平面效果更好呢&#xff1…