DrawBoard 是一个自定义 View 实现的画板;方便对图片进行各种编辑或涂鸦相关操作

DrawBoard

项目地址:jenly1314/DrawBoard 

简介: :art: DrawBoard 是一个自定义 View 实现的画板;方便对图片进行各种编辑或涂鸦相关操作
更多:作者   提 Bug   
标签:

       

DrawBoard 是一个自定义 View 实现的画板;方便对图片进行各种编辑或涂鸦相关操作。

  • 主要支持的一些操作:撤销、恢复、清空、缩放
  • 主要支持的绘制模式:画路径、画点、画直线、画矩形、画椭圆、画圆、画文字、画图片、橡皮擦

Gif 展示

你也可以直接下载 演示 App 体验效果

DrawBoardView 自定义属性说明

属性属性类型默认值属性说明
dbvMinZoomfloat1.0支持最小的放大倍数
dbvMaxZoomfloat4.0支持最大的放大倍数
dbvFitbooleantrue是否自适应
dbvDrawEnabledbooleantrue是否启用绘图
dbvZoomEnabledbooleantrue是否启用缩放
dbvShowTouchPointbooleantrue是否显示触摸点
android:srcdrawable设置图片(画板背景图层)
dbvPaintColorcolor#FFFF0000画笔的颜色
dbvTouchPointColorcolor#AFCCCCCC触摸点的颜色
dbvDrawTextSizedimension15sp绘制文本的字体大小
dbvDrawTextBoldbooleanfalse绘制文本是否是粗体
dbvDrawTextUnderlinebooleanfalse绘制文本是否需要下划线
dbvTouchTolerancefloat4.0触摸时允许的容差值
dbvTouchPointRatiofloat1.2触摸点的比例

引入

Gradle:

  1. 在 Project 的 build.gradle 里面添加远程仓库
allprojects {
    repositories {
        //...
        mavenCentral()
    }
}
  1. 在 Module 的 build.gradle 里面添加引入依赖项 ```gradle implementation 'com.github.jenly1314:drawboard:1.0.1'

## 示例

布局示例
```xml

    <com.king.drawboard.view.DrawBoardView
        android:id="@+id/drawBoardView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

主要支持的绘制模式


/**
 * 绘制路径
 */
DrawMode.DRAW_PATH
/**
 * 绘制点
 */
DrawMode.DRAW_POINT
/**
 * 绘制线
 */
DrawMode.DRAW_LINE
/**
 * 绘制矩形
 */
DrawMode.DRAW_RECT
/**
 * 绘制椭圆
 */
DrawMode.DRAW_OVAL
/**
 * 绘制圆
 */
DrawMode.DRAW_CIRCLE
/**
 * 绘制文本
 */
DrawMode.DRAW_TEXT
/**
 * 绘制图片
 */
DrawMode.DRAW_BITMAP
/**
 * 橡皮擦
 */
DrawMode.ERASER
/**
 * 如设置绘制模式为:DrawMode.DRAW_PATH
 */
drawBoardView.setDrawMode(DrawMode.DRAW_PATH)

主要的一些操作方法

/**
 * 撤销一步
 */
drawBoardView.undo()
/**
 * 恢复一步
 */
drawBoardView.redo()
/**
 * 清除画布
 */
drawBoardView.clear()
/**
 * 改变绘制模式
 */
drawBoardView.setDrawMode(drawMode)
/**
 * 设置画笔颜色
 */
drawBoardView.setPaintColor(paintColor)
/**
 * 设置画笔线条描边宽度
 */
drawBoardView.setLineStrokeWidth(lineStrokeWidth)
/**
 * 设置图片(画板背景图层)
 */
drawBoardView.setImageBitmap(bitmap)
/**
 * 获取图片(画板背景图层和画板图层合并后的图片)
 */
drawBoardView.getImageBitmap()

更多使用详情,请查看Demo中的源码使用示例或直接查看API 帮助文档

版本记录

v1.0.1:2022-2-17

  • 对外提供更多 Paint 相关配置

v1.0.0:2021-11-30

  • DrawBoard 初始版本
在Python中,要创建一个类似画板的功能,通常会结合使用`PIL`(Python Imaging Library)来处理图像和`tkinter`来构建用户界面。你可以创建一个窗口,在窗口内嵌入一个`PhotoImage`对象,让用户直接在上面绘画,同时还可以加载和显示图片。 这里是一个基础的示例,使用`tkinter`和`PIL`来创建一个简单的绘图区域,以及加载和显示图片的功能: ```python import tkinter as tk from PIL import Image, ImageDraw class DrawBoard: def __init__(self, root): self.root = root self.canvas = tk.Canvas(root, bg='white', width=600, height=400) self.canvas.pack() # 定义一个变量来存储图片对象 self.image_object = None # 绘制工具栏 self.toolbar = tk.Frame(root) self.button_load_image = tk.Button(self.toolbar, text="Load Image", command=self.load_image) self.button_clear = tk.Button(self.toolbar, text="Clear", command=self.clear_canvas) self.toolbar.pack(side=tk.TOP) def load_image(self): file_path = tk.filedialog.askopenfilename(filetypes=(("JPEG files", "*.jpg"), ("PNG files", "*.png"))) if file_path: img = Image.open(file_path) self.show_image(img) def show_image(self, image): self.canvas.delete("all") # 清除原有内容 self.image_object = ImageTk.PhotoImage(image) self.canvas.create_image(0, 0, anchor="nw", image=self.image_object) def clear_canvas(self): if self.image_object is not None: self.canvas.delete(self.image_object) self.image_object = None # 创建主窗口 root = tk.Tk() draw_board = DrawBoard(root) root.mainloop() ``` 在这个例子中,用户可以点击"Load Image"按钮选择图片,然后图片会被显示在画布上。如果已经在画布上有图像,点击"Clear"按钮则会清除当前的图像。 注意这只是一个非常基础的例子,实际应用中可能需要添加更多功能,比如保存绘制的内容,或者支持用户直接在图片上绘画。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值