目录
一. 综述 1
完成的内容(额外功能为加粗部分) 1
二. 算法介绍 3

  1. DDA 3
  2. bresenham 4
    3.中点椭圆 5
    4.bezier 绘制曲线 6
    5.B-Spline 绘制曲线 7
    6.图元变换 9
  3. Cohen-Sutherland 线段裁剪算法 10
  4. Liang-Barsky 线段裁剪算法 11
    9.多边形扫描线填充算法 12
    10.区域种子填充算法 14
  5. Nicholl-Lee-Nicholl 线段裁剪算法 15
  6. Sutherland-Hodgeman 多边形裁剪算法 16
    12.字符图元绘制算法 17
    三.Gui 系统介绍 17
    1.总体框架 17
    2.模块划分 18
    4.界面设计 21
    四.Cli 系统介绍 21
    五.感受和总结 22
    六.参考资料 25
    七.进度日志 25
    一. 综述
    计划完成一个功能完善的图形学系统。实现各种图形学的算法,完成绘图软件的常见功能。如常见图形的绘制、平移、旋转、放缩、裁剪、填充等。系统分成两个部分,gui 部分以图形界面的形式进行交互;cli 部分以读取文件命令行的形式进行交互。
    完成的内容(额外功能为加粗部分)
    Gui 系统:新建画布、打开图片、保存图片、另存为、关于信息、退出画布、绘制直线(DDA 和 bresenham)、绘制多边形(DDA 和 bresenham)、绘制矩形、绘制三角形、绘制椭圆(中点法)、绘制曲线(Bezier 和 B-spline)、绘制字符、设置画笔颜色、粗细设置、铅笔、刷子、橡皮、选择图元(可调整图元的控制点和复制粘贴)、快捷键、平移图元、旋转图元、放缩图元、裁剪直线图元(Cohen-
    Sutherland 、 Liang-Barsky 和 Nicholl-Lee-Nicholl ) 、 裁 剪 多 边 形 图 元
    (Sutherland-Hodgeman)、填充图元(多边形扫描线填充和区域种子填充)、撤销操作、重做操作、清空画布、退出时如画板有修改则提示保存、状态栏显示当前鼠标像素位置、操作序列和状态、画板大小等
    Cli 系统:识别文件指令、图元对象的生成建模、画布的绘制和保存
    本文转载自:http://www.biyezuopin.vip/onews.asp?id=16532
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(1523, 916)MainWindow.setMinimumSize(QtCore.QSize(100, 100))MainWindow.setMaximumSize(QtCore.QSize(16777215, 16777215))self.centralWidget = QtWidgets.QWidget(MainWindow)self.centralWidget.setMinimumSize(QtCore.QSize(1000, 800))self.centralWidget.setMaximumSize(QtCore.QSize(1000, 800))self.centralWidget.setObjectName("centralWidget")MainWindow.setCentralWidget(self.centralWidget)self.mainToolBar = QtWidgets.QToolBar(MainWindow)self.mainToolBar.setObjectName("mainToolBar")MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)self.menuBar = QtWidgets.QMenuBar(MainWindow)self.menuBar.setGeometry(QtCore.QRect(0, 0, 1523, 26))self.menuBar.setObjectName("menuBar")self.menu = QtWidgets.QMenu(self.menuBar)self.menu.setObjectName("menu")self.menu_2 = QtWidgets.QMenu(self.menuBar)self.menu_2.setObjectName("menu_2")self.menu_3 = QtWidgets.QMenu(self.menu_2)self.menu_3.setObjectName("menu_3")self.menu_7 = QtWidgets.QMenu(self.menu_2)self.menu_7.setObjectName("menu_7")self.menu_8 = QtWidgets.QMenu(self.menu_2)self.menu_8.setObjectName("menu_8")self.menu_4 = QtWidgets.QMenu(self.menu_8)self.menu_4.setObjectName("menu_4")self.menu_9 = QtWidgets.QMenu(self.menu_8)self.menu_9.setObjectName("menu_9")self.menu_10 = QtWidgets.QMenu(self.menu_8)self.menu_10.setObjectName("menu_10")self.menu_5 = QtWidgets.QMenu(self.menuBar)self.menu_5.setObjectName("menu_5")self.menu_11 = QtWidgets.QMenu(self.menu_5)self.menu_11.setObjectName("menu_11")self.menu_6 = QtWidgets.QMenu(self.menuBar)self.menu_6.setObjectName("menu_6")MainWindow.setMenuBar(self.menuBar)self.statusBar = QtWidgets.QStatusBar(MainWindow)self.statusBar.setMinimumSize(QtCore.QSize(1000, 50))self.statusBar.setMaximumSize(QtCore.QSize(1000, 50))self.statusBar.setObjectName("statusBar")MainWindow.setStatusBar(self.statusBar)self.actionSave_as = QtWidgets.QAction(MainWindow)icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionSave_as.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionSave_as.setIcon(icon)self.actionSave_as.setObjectName("actionSave_as")self.actionAbout = QtWidgets.QAction(MainWindow)icon1 = QtGui.QIcon()icon1.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionAbout.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionAbout.setIcon(icon1)self.actionAbout.setObjectName("actionAbout")self.actionExit = QtWidgets.QAction(MainWindow)icon2 = QtGui.QIcon()icon2.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionExit.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionExit.setIcon(icon2)self.actionExit.setObjectName("actionExit")self.actionNew = QtWidgets.QAction(MainWindow)icon3 = QtGui.QIcon()icon3.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionNew.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionNew.setIcon(icon3)self.actionNew.setObjectName("actionNew")self.actionShape = QtWidgets.QAction(MainWindow)self.actionShape.setObjectName("actionShape")self.actionColor = QtWidgets.QAction(MainWindow)icon4 = QtGui.QIcon()icon4.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionColor.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionColor.setIcon(icon4)self.actionColor.setObjectName("actionColor")self.actionChoose = QtWidgets.QAction(MainWindow)icon5 = QtGui.QIcon()icon5.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionChoose.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionChoose.setIcon(icon5)self.actionChoose.setObjectName("actionChoose")self.actionScale = QtWidgets.QAction(MainWindow)icon6 = QtGui.QIcon()icon6.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionScale.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionScale.setIcon(icon6)self.actionScale.setObjectName("actionScale")self.actionRotate = QtWidgets.QAction(MainWindow)icon7 = QtGui.QIcon()icon7.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionRotate.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionRotate.setIcon(icon7)self.actionRotate.setObjectName("actionRotate")self.actionPencil = QtWidgets.QAction(MainWindow)icon8 = QtGui.QIcon()icon8.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionPencil.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionPencil.setIcon(icon8)self.actionPencil.setObjectName("actionPencil")self.actionBrush = QtWidgets.QAction(MainWindow)icon9 = QtGui.QIcon()icon9.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionBrush.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionBrush.setIcon(icon9)self.actionBrush.setObjectName("actionBrush")self.actionEraser = QtWidgets.QAction(MainWindow)icon10 = QtGui.QIcon()icon10.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionEraser.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionEraser.setIcon(icon10)self.actionEraser.setObjectName("actionEraser")self.actionUndo = QtWidgets.QAction(MainWindow)icon11 = QtGui.QIcon()icon11.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionUndo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionUndo.setIcon(icon11)self.actionUndo.setObjectName("actionUndo")self.actionRedo = QtWidgets.QAction(MainWindow)icon12 = QtGui.QIcon()icon12.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionRedo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionRedo.setIcon(icon12)self.actionRedo.setObjectName("actionRedo")self.actionClear = QtWidgets.QAction(MainWindow)icon13 = QtGui.QIcon()icon13.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionClear.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionClear.setIcon(icon13)self.actionClear.setObjectName("actionClear")self.actionThick = QtWidgets.QAction(MainWindow)icon14 = QtGui.QIcon()icon14.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionThick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionThick.setIcon(icon14)self.actionThick.setObjectName("actionThick")self.actionNormal = QtWidgets.QAction(MainWindow)icon15 = QtGui.QIcon()icon15.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionNormal.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionNormal.setIcon(icon15)self.actionNormal.setObjectName("actionNormal")self.actionThin = QtWidgets.QAction(MainWindow)icon16 = QtGui.QIcon()icon16.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionThin.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionThin.setIcon(icon16)self.actionThin.setObjectName("actionThin")self.actionRectangle = QtWidgets.QAction(MainWindow)icon17 = QtGui.QIcon()icon17.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionRectangle.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionRectangle.setIcon(icon17)self.actionRectangle.setObjectName("actionRectangle")self.actionOval = QtWidgets.QAction(MainWindow)icon18 = QtGui.QIcon()icon18.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionOval.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionOval.setIcon(icon18)self.actionOval.setObjectName("actionOval")self.actionTriangle = QtWidgets.QAction(MainWindow)icon19 = QtGui.QIcon()icon19.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionTriangle.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionTriangle.setIcon(icon19)self.actionTriangle.setObjectName("actionTriangle")self.actionMove = QtWidgets.QAction(MainWindow)icon20 = QtGui.QIcon()icon20.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionMove.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionMove.setIcon(icon20)self.actionMove.setObjectName("actionMove")self.actionDDA = QtWidgets.QAction(MainWindow)icon21 = QtGui.QIcon()icon21.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionDDA.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionDDA.setIcon(icon21)self.actionDDA.setObjectName("actionDDA")self.actionBresenham = QtWidgets.QAction(MainWindow)icon22 = QtGui.QIcon()icon22.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionBresenham.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionBresenham.setIcon(icon22)self.actionBresenham.setObjectName("actionBresenham")self.actionBezier = QtWidgets.QAction(MainWindow)icon23 = QtGui.QIcon()icon23.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionBezier.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionBezier.setIcon(icon23)self.actionBezier.setObjectName("actionBezier")self.actionDDA2 = QtWidgets.QAction(MainWindow)icon24 = QtGui.QIcon()icon24.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionDDA2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionDDA2.setIcon(icon24)self.actionDDA2.setObjectName("actionDDA2")self.actionBresenham2 = QtWidgets.QAction(MainWindow)icon25 = QtGui.QIcon()icon25.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionBresenham2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionBresenham2.setIcon(icon25)self.actionBresenham2.setObjectName("actionBresenham2")self.actionCohen_Sutherland = QtWidgets.QAction(MainWindow)icon26 = QtGui.QIcon()icon26.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionCohen-Sutherland.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionCohen_Sutherland.setIcon(icon26)self.actionCohen_Sutherland.setObjectName("actionCohen_Sutherland")self.actionLiang_Barsky = QtWidgets.QAction(MainWindow)icon27 = QtGui.QIcon()icon27.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionLiang-Barsky.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionLiang_Barsky.setIcon(icon27)self.actionLiang_Barsky.setObjectName("actionLiang_Barsky")self.actionB_spline = QtWidgets.QAction(MainWindow)icon28 = QtGui.QIcon()icon28.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionB_spline.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionB_spline.setIcon(icon28)self.actionB_spline.setObjectName("actionB_spline")self.actionCopy = QtWidgets.QAction(MainWindow)icon29 = QtGui.QIcon()icon29.addPixmap(QtGui.QPixmap(":/pic/resouce/actionCopy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionCopy.setIcon(icon29)self.actionCopy.setObjectName("actionCopy")self.actionPaste = QtWidgets.QAction(MainWindow)icon30 = QtGui.QIcon()icon30.addPixmap(QtGui.QPixmap(":/pic/resouce/actionPaste.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionPaste.setIcon(icon30)self.actionPaste.setObjectName("actionPaste")self.actionLast = QtWidgets.QAction(MainWindow)icon31 = QtGui.QIcon()icon31.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionLast.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionLast.setIcon(icon31)self.actionLast.setObjectName("actionLast")self.actionNext = QtWidgets.QAction(MainWindow)icon32 = QtGui.QIcon()icon32.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionNext.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionNext.setIcon(icon32)self.actionNext.setObjectName("actionNext")self.actionFill = QtWidgets.QAction(MainWindow)icon33 = QtGui.QIcon()icon33.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionFill.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionFill.setIcon(icon33)self.actionFill.setObjectName("actionFill")self.actionNicholl_Lee_Nicholl = QtWidgets.QAction(MainWindow)icon34 = QtGui.QIcon()icon34.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionNicholl-Lee-Nicholl.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionNicholl_Lee_Nicholl.setIcon(icon34)self.actionNicholl_Lee_Nicholl.setObjectName("actionNicholl_Lee_Nicholl")self.actionSutherland_Hodgeman = QtWidgets.QAction(MainWindow)icon35 = QtGui.QIcon()icon35.addPixmap(QtGui.QPixmap(":/pic/resouce/Sutherland-Hodgeman.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionSutherland_Hodgeman.setIcon(icon35)self.actionSutherland_Hodgeman.setObjectName("actionSutherland_Hodgeman")self.actionWord = QtWidgets.QAction(MainWindow)icon36 = QtGui.QIcon()icon36.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionWord.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionWord.setIcon(icon36)self.actionWord.setObjectName("actionWord")self.actionLock = QtWidgets.QAction(MainWindow)icon37 = QtGui.QIcon()icon37.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionLock.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionLock.setIcon(icon37)self.actionLock.setObjectName("actionLock")self.actionSaveFile = QtWidgets.QAction(MainWindow)icon38 = QtGui.QIcon()icon38.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionSave.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionSaveFile.setIcon(icon38)self.actionSaveFile.setObjectName("actionSaveFile")self.actionOpenFile = QtWidgets.QAction(MainWindow)icon39 = QtGui.QIcon()icon39.addPixmap(QtGui.QPixmap(":/pic/resouce/ActionOpen.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.actionOpenFile.setIcon(icon39)self.actionOpenFile.setObjectName("actionOpenFile")self.mainToolBar.addAction(self.actionNew)self.mainToolBar.addAction(self.actionOpenFile)self.mainToolBar.addAction(self.actionSaveFile)self.mainToolBar.addAction(self.actionSave_as)self.mainToolBar.addAction(self.actionAbout)self.mainToolBar.addAction(self.actionExit)self.mainToolBar.addSeparator()self.mainToolBar.addAction(self.actionPencil)self.mainToolBar.addAction(self.actionBrush)self.mainToolBar.addAction(self.actionEraser)self.mainToolBar.addAction(self.actionDDA)self.mainToolBar.addAction(self.actionBresenham)self.mainToolBar.addAction(self.actionRectangle)self.mainToolBar.addAction(self.actionTriangle)self.mainToolBar.addAction(self.actionDDA2)self.mainToolBar.addAction(self.actionBresenham2)self.mainToolBar.addAction(self.actionOval)self.mainToolBar.addAction(self.actionBezier)self.mainToolBar.addAction(self.actionB_spline)self.mainToolBar.addAction(self.actionWord)self.mainToolBar.addAction(self.actionColor)self.mainToolBar.addAction(self.actionThick)self.mainToolBar.addAction(self.actionNormal)self.mainToolBar.addAction(self.actionThin)self.mainToolBar.addSeparator()self.mainToolBar.addAction(self.actionChoose)self.mainToolBar.addAction(self.actionLast)self.mainToolBar.addAction(self.actionNext)self.mainToolBar.addAction(self.actionCopy)self.mainToolBar.addAction(self.actionPaste)self.mainToolBar.addAction(self.actionMove)self.mainToolBar.addAction(self.actionRotate)self.mainToolBar.addAction(self.actionScale)self.mainToolBar.addAction(self.actionCohen_Sutherland)self.mainToolBar.addAction(self.actionLiang_Barsky)self.mainToolBar.addAction(self.actionNicholl_Lee_Nicholl)self.mainToolBar.addAction(self.actionSutherland_Hodgeman)self.mainToolBar.addAction(self.actionFill)self.mainToolBar.addAction(self.actionLock)self.mainToolBar.addSeparator()self.mainToolBar.addAction(self.actionUndo)self.mainToolBar.addAction(self.actionRedo)self.mainToolBar.addAction(self.actionClear)self.menu.addAction(self.actionNew)self.menu.addAction(self.actionOpenFile)self.menu.addAction(self.actionSaveFile)self.menu.addAction(self.actionSave_as)self.menu.addSeparator()self.menu.addAction(self.actionAbout)self.menu.addSeparator()self.menu.addAction(self.actionExit)self.menu.addSeparator()self.menu_3.addAction(self.actionPencil)self.menu_3.addAction(self.actionBrush)self.menu_3.addAction(self.actionEraser)self.menu_7.addAction(self.actionThick)self.menu_7.addAction(self.actionNormal)self.menu_7.addAction(self.actionThin)self.menu_4.addAction(self.actionDDA)self.menu_4.addAction(self.actionBresenham)self.menu_9.addAction(self.actionBezier)self.menu_9.addAction(self.actionB_spline)self.menu_10.addAction(self.actionDDA2)self.menu_10.addAction(self.actionBresenham2)self.menu_8.addAction(self.menu_4.menuAction())self.menu_8.addAction(self.menu_10.menuAction())self.menu_8.addAction(self.menu_9.menuAction())self.menu_8.addAction(self.actionRectangle)self.menu_8.addAction(self.actionOval)self.menu_8.addAction(self.actionTriangle)self.menu_8.addAction(self.actionWord)self.menu_2.addAction(self.menu_3.menuAction())self.menu_2.addAction(self.menu_8.menuAction())self.menu_2.addSeparator()self.menu_2.addAction(self.actionColor)self.menu_2.addAction(self.menu_7.menuAction())self.menu_11.addAction(self.actionCohen_Sutherland)self.menu_11.addAction(self.actionLiang_Barsky)self.menu_11.addAction(self.actionNicholl_Lee_Nicholl)self.menu_11.addAction(self.actionSutherland_Hodgeman)self.menu_5.addAction(self.actionChoose)self.menu_5.addAction(self.actionCopy)self.menu_5.addAction(self.actionPaste)self.menu_5.addAction(self.actionMove)self.menu_5.addAction(self.actionRotate)self.menu_5.addAction(self.actionScale)self.menu_5.addAction(self.menu_11.menuAction())self.menu_5.addAction(self.actionFill)self.menu_5.addAction(self.actionLock)self.menu_5.addAction(self.actionLast)self.menu_5.addAction(self.actionNext)self.menu_6.addAction(self.actionUndo)self.menu_6.addAction(self.actionRedo)self.menu_6.addAction(self.actionClear)self.menuBar.addAction(self.menu.menuAction())self.menuBar.addAction(self.menu_2.menuAction())self.menuBar.addAction(self.menu_5.menuAction())self.menuBar.addAction(self.menu_6.menuAction())self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.menu.setTitle(_translate("MainWindow", "文件"))self.menu_2.setTitle(_translate("MainWindow", "功能"))self.menu_3.setTitle(_translate("MainWindow", "绘图工具"))self.menu_7.setTitle(_translate("MainWindow", "粗细选择"))self.menu_8.setTitle(_translate("MainWindow", " 常用形状"))self.menu_4.setTitle(_translate("MainWindow", "直线 "))self.menu_9.setTitle(_translate("MainWindow", "曲线"))self.menu_10.setTitle(_translate("MainWindow", "多边形"))self.menu_5.setTitle(_translate("MainWindow", "编辑"))self.menu_11.setTitle(_translate("MainWindow", "裁剪"))self.menu_6.setTitle(_translate("MainWindow", "视图"))self.actionSave_as.setText(_translate("MainWindow", "另存"))self.actionAbout.setText(_translate("MainWindow", "关于"))self.actionExit.setText(_translate("MainWindow", "退出"))self.actionNew.setText(_translate("MainWindow", "新建"))self.actionShape.setText(_translate("MainWindow", "图形选择"))self.actionColor.setText(_translate("MainWindow", "颜色选择"))self.actionChoose.setText(_translate("MainWindow", "选择"))self.actionScale.setText(_translate("MainWindow", "缩放"))self.actionRotate.setText(_translate("MainWindow", "旋转"))self.actionPencil.setText(_translate("MainWindow", "铅笔"))self.actionBrush.setText(_translate("MainWindow", "刷子"))self.actionEraser.setText(_translate("MainWindow", "橡皮"))self.actionUndo.setText(_translate("MainWindow", "撤销"))self.actionRedo.setText(_translate("MainWindow", "重做"))self.actionClear.setText(_translate("MainWindow", "清空"))self.actionThick.setText(_translate("MainWindow", "粗"))self.actionNormal.setText(_translate("MainWindow", "中"))self.actionThin.setText(_translate("MainWindow", "细"))self.actionRectangle.setText(_translate("MainWindow", "矩形"))self.actionOval.setText(_translate("MainWindow", "椭圆"))self.actionTriangle.setText(_translate("MainWindow", "三角"))self.actionMove.setText(_translate("MainWindow", "平移"))self.actionDDA.setText(_translate("MainWindow", "DDA"))self.actionBresenham.setText(_translate("MainWindow", "Bresenham"))self.actionBezier.setText(_translate("MainWindow", "Bezier"))self.actionDDA2.setText(_translate("MainWindow", "DDA"))self.actionBresenham2.setText(_translate("MainWindow", "Bresenham"))self.actionCohen_Sutherland.setText(_translate("MainWindow", "Cohen-Sutherland"))self.actionLiang_Barsky.setText(_translate("MainWindow", "Liang-Barsky"))self.actionB_spline.setText(_translate("MainWindow", "B-spline"))self.actionCopy.setText(_translate("MainWindow", "复制"))self.actionPaste.setText(_translate("MainWindow", "粘贴"))self.actionLast.setText(_translate("MainWindow", "上一个"))self.actionNext.setText(_translate("MainWindow", "下一个"))self.actionFill.setText(_translate("MainWindow", "填充"))self.actionNicholl_Lee_Nicholl.setText(_translate("MainWindow", "Nicholl-Lee-Nicholl"))self.actionSutherland_Hodgeman.setText(_translate("MainWindow", "Sutherland-Hodgeman"))self.actionWord.setText(_translate("MainWindow", "字符"))self.actionLock.setText(_translate("MainWindow", "加密"))self.actionSaveFile.setText(_translate("MainWindow", "保存图片"))self.actionOpenFile.setText(_translate("MainWindow", "打开图片"))
import myresouce_rc



























基于PythonGUI的图形学系统绘图软件相关推荐

  1. 基于Android家庭理财系统手机软件设计

    每个家庭都希望过幸福美满的生活,但大多数人可能一生都无法满足.现代生活中我们除了追求精神上的财富不可缺少的也要追求房子.车子.高档理财等这些象征物质财富的东西.生活质量的保证,还是多数人努力追求的目标 ...

  2. Android项目:基于Android家庭理财系统手机软件设计(计算机毕业设计)

    每个家庭都希望过幸福美满的生活,但大多数人可能一生都无法满足.现代生活中我们除了追求精神上的财富不可缺少的也要追求房子.车子.高档理财等这些象征物质财富的东西.生活质量的保证,还是多数人努力追求的目标 ...

  3. 如何基于MFC制作简易绘图软件

    本文将讲解如何通过MFC制作一个简易的绘图软件 文章目录 一.构造软件的界面 二.画出图形 三.图形的保存与重绘 四.程序下载 一.构造软件的界面 首先新建一个MFC的工程,进入之后按F5调试,可以看 ...

  4. 在linux下进行嵌入式系统设计,一种应用于测控系统的基于Linux的嵌入式系统的设计...

    描述 1.前言 随着网络控制技术的快速发展,工业以太网得到逐步完善,在工业控制领域获得越来越广泛的应用.工业以太网使用了TCP/IP协议,便于联网,并具有高速控制网络的优点.随着32位嵌入式CPU价格 ...

  5. 基于android的课程画图设计,基于Android的智能终端通信勘察设计系统绘图模块的设计与实现...

    摘要: 随着通信行业甲方对设计勘察要求的提高,设计院的工作人员在外勘察的任务也越来越重.而传统勘察绘图使用纸质介质进行信息采集并在整理后进行计算机制图的的方式效率过于低下,不能满足当前勘察对效率和成本 ...

  6. QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现

    QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现 结构 UI部分 代码部分 step1:实现串口数据接受 串口接受数据格式 在`.pro`文件中添加`serialp ...

  7. 基于ESP32的智能车竞赛新版裁判系统的软件功能要求与实现

    简 介: 本文给出了第十六届智能车竞赛裁判系统最终的软件设计和功能实现.并进行了验证,是它可以满足比赛基本计时要求. 最后给出了完整的程序. 关键词: 智能车竞赛,ESP32,视觉AI §01 智能车 ...

  8. java开发组态软件下载_基于JAVA的煤矿安全监控系统组态软件设计研究.pdf

    ·218· 工矿自动化 基于JAVA的煤矿安全监控系统组态软件设计 鲍毅华钢 (中国矿业大学信电学院 江苏徐州 221008) [摘要]本文通过对当前煤矿安全监控系统组态存在的问题和发展趋势的问题,提 ...

  9. 基于模型的系统工程设计软件ModelCoder在航空发动机控制设计中的应用

    基于模型的系统工程(MBSE)使用数字模型的方式表达描述工程系统的完整生命周期中的需求和设计等活动,以无歧义.模块化等优点快速覆盖了如航空航天.船舶.卫星等相关安全关键领域.在系统工程的初期,系统产生 ...

最新文章

  1. Nginx 虚拟主机
  2. 魅族mx5游戏模式小熊猫_您不知道的5大熊猫技巧
  3. 关于telnet: connect to address 190.168.6.6: No route to host 报错处理
  4. Java 设计模式之 Composite 组合模式
  5. jdbcUrl is required with driverClassName错误解决
  6. mysql 导出表数据表结构
  7. ARM在汽车电子电器架构的应用
  8. Python+tkinter动态显示与隐藏窗口上的组件
  9. js第六、七天 Array、string
  10. 【Python百日进阶-Web开发-Feffery】Day437 - fac实例:使用fac中上传组件时实现自主控制uploadId
  11. 人工智能导论——遗传算法求解TSP问题实验
  12. 计算机卡登录界面,win10电脑卡在登录界面怎么办
  13. 杨辉三角 帕斯卡三角形(C语言)
  14. HTML静态网页作业——我的家乡安庆
  15. unity3D第一人称射击游戏(推荐)
  16. qwq。。胡诌qwq
  17. linux安装rar解压程序
  18. linux在目录exp中创建空白文件,Linux之文件目录
  19. 用nginx反向代理功能将WS转为加密websocket (wss)
  20. R12 表详解系列—-总账

热门文章

  1. 【软考高项笔记】第3章 信息系统治理(针对甲方)3.2 IT审计
  2. 第十三届蓝桥杯嵌入式省赛真题演练——密码锁
  3. 面试--北京闪银奇异
  4. RAID:所有模式详解
  5. 安装配置Internet信息服务(IIS)
  6. Hello, Cocos2d-x
  7. 有符号整型和无符号整型
  8. 遗传算法(Genetic Algorithms)的全面讲解及python实现
  9. ------------------------3
  10. 如何设计一款合适的丙烯酸树脂?——丙烯酸树脂配方设计概要