All Projects → zsnjuts → PaintWorks

zsnjuts / PaintWorks

Licence: other
基于Qt,自行实现底层绘图算法的绘图系统/画板

Programming Languages

C++
36643 projects - #6 most used programming language
QMake
1090 projects

Projects that are alternatives of or similar to PaintWorks

Pixelfarm
From Vectors to (sub) Pixels, C# 2D Rendering Library
Stars: ✭ 120 (+118.18%)
Mutual labels:  painting
Sketch
Sketch have a lot of basic functions to develop a drawing app for iPhone. Anyone can easily create drawing iOS Application.
Stars: ✭ 229 (+316.36%)
Mutual labels:  painting
bLUe PYSIDE
bLUe - A simple and comprehensive image editor featuring automatic contrast enhancement, color correction, 3D LUT creation, raw postprocessing, exposure fusion and noise reduction
Stars: ✭ 41 (-25.45%)
Mutual labels:  painting
Art Dcgan
Modified implementation of DCGAN focused on generative art. Includes pre-trained models for landscapes, nude-portraits, and others.
Stars: ✭ 1,882 (+3321.82%)
Mutual labels:  painting
Nonflowers
Procedurally generated paintings of nonexistent flowers.
Stars: ✭ 208 (+278.18%)
Mutual labels:  painting
powerpaint
Kreative PowerPaint - Library and Application for Bitmap and Vector Image Editing
Stars: ✭ 27 (-50.91%)
Mutual labels:  painting
Mopaint
🎨💪 Modern, modular paint and more! (pre-alpha, not much done yet)
Stars: ✭ 50 (-9.09%)
Mutual labels:  painting
Drawing
Drawing and fill color
Stars: ✭ 37 (-32.73%)
Mutual labels:  painting
Libmypaint
libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.
Stars: ✭ 225 (+309.09%)
Mutual labels:  painting
react-artboard
A realistic paint component
Stars: ✭ 45 (-18.18%)
Mutual labels:  painting
Mypaint
MyPaint is a simple drawing and painting program that works well with Wacom-style graphics tablets.
Stars: ✭ 2,072 (+3667.27%)
Mutual labels:  painting
Openbrushvr
Unity VR & AR Painting in 3d space for the Vive and Tango and ARKit
Stars: ✭ 180 (+227.27%)
Mutual labels:  painting
voxel-builder
Voxel-based 3D modeling application
Stars: ✭ 31 (-43.64%)
Mutual labels:  painting
Armorpaint
3D PBR Texture Painting Software
Stars: ✭ 2,065 (+3654.55%)
Mutual labels:  painting
AsLib
🎨: RPG map maker (paint tool)
Stars: ✭ 82 (+49.09%)
Mutual labels:  painting
Maliang
iOS painting and drawing library based on Metal. 神笔马良有一支神笔(基于 Metal 的涂鸦绘图库)
Stars: ✭ 1,117 (+1930.91%)
Mutual labels:  painting
Shan Shui Inf
Procedurally generated Chinese landscape painting.
Stars: ✭ 3,168 (+5660%)
Mutual labels:  painting
Paint3D
A program allowing painting textures of different channels SIMULTANEOUSLY on a 3d model
Stars: ✭ 24 (-56.36%)
Mutual labels:  painting
arkit-graffiti
A demo that shows painting on walls with ARKit+SceneKit
Stars: ✭ 49 (-10.91%)
Mutual labels:  painting
isopaint
Isometric Painting Tool on HTML5 canvas
Stars: ✭ 58 (+5.45%)
Mutual labels:  painting

PaintWorks

系统使用说明书在这里 系统技术报告在这里

运行图

已实现的功能

  • 直线绘制

  • 圆的绘制+填充

  • 椭圆绘制

  • 多边形绘制+填充

  • 已实现基础的UI交互,切换图形绘制模式

  • 已实现markDraw,为各Figure提供被选中的虚线矩形框显示

  • 已实现图形编辑

  • 已实现图形变换

    • 平移:已实现各图形的平移(通过点的平移实现)
    • 旋转:已实现各图形的旋转(其中圆的旋转保持不变,椭圆旋转只能转90度)
    • 缩放:已实现各图形的缩放(直线以中点为准,圆和椭圆以中心为准,多边形以绘制的第一个点为准)
  • 已实现图形裁剪

    • 只实现了直线与多边形的裁剪
    • 直线裁剪为梁友栋-Barsky裁剪算法,多边形裁剪为单边裁剪算法
    • 对所有直线与多边形进行裁剪
  • 已实现存储图形数据

    • 保存为bmp格式
  • 已实现3D六面体显示

    • 使用OpenGL库函数
    • 可以使用键盘控制左右旋转
  • 已实现UI基础交互

    • 放大缩小

      对所有图形同时放大缩小,缩放基准点为各图形自己的基准点,而非鼠标

    • 填充

    • 裁剪

    • 平移

      • 直线拖动中点平移
      • 圆拖动圆心平移
      • 椭圆拖动中心平移
      • 多边形拖动中心平移
    • 聚焦(点击图形让被选中图形在最高图层显示)

      • 直线
      • 椭圆
      • 多边形
    • 旋转:拖动handle旋转

      • 点:添加了三个相关支持函数
      • 直线:使用点的支持函数实现
      • 圆:只改变handle,其余均不动
      • 椭圆:handle旋转至水平或垂直时,旋转90度
      • 多边形:按键时不改变handle

下一步工作

目前进展

  • 已实现缩放改为对单个图形进行缩放,裁剪改为对单个图形进行裁剪
  • 已实现交互界面新增功能
    • 平移:拖动矩形中心点
    • 旋转:拖动延伸出来的点
  • 已实现添加删除图形、清空图形按钮
  • 已添加图形选中
    • 直线:检测轮廓点
    • 圆、椭圆、多边形:检测轮廓点+填充点
    • 画布的curCtrl变化之后,通过信号-槽机制从widget向Mainwindow发送消息,改变当前绘图模式
  • 已添加颜色控制按钮
    • 选择颜色之后,线条与填充均为这种颜色
  • 曲线绘制&编辑&变换
    • 已实现曲线绘制+拖动控制点编辑
    • 曲线变换
      • 平移
      • 缩放
      • 旋转
  • 已实现选取
    • isOn*函数检测该点是否在图形上
    • isOn()检测该点是否在图形或标记点(markPoints,center,handle)上,isOnPlain()检测该点是否在图形本身上(不包括标记点)

可以改进的地方

tips

  • 解决了MainWindow直接控制当前GLWidget的问题

    使用dynamic_cast<GLWidget*>()即可,可以不必再使用GLWidget的数组canvases(已去掉)

bug

  • 标签页关闭之后切换图形绘制模式会导致程序崩溃 已使用dynamic_cast解决

    应该让QMdiSubWindow在关闭时delete掉GLWidget,可能需要重写QMdiSubWindow的 virtual void closeEvent(QCloseEvent * closeEvent) 函数,最好是将相关信号关联到Mainwindow的一个槽函数,省得再写QMdiSubWindow了。

  • 椭圆刚生成的时候handle有问题 已解决

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].