提交 cbc34940 编写于 作者: K Kentaro Wada

Fill drawing shape by a pale color

上级 c69d1899
...@@ -309,6 +309,16 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin): ...@@ -309,6 +309,16 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
shapeFillColor = action( shapeFillColor = action(
'Shape &Fill Color', self.chshapeFillColor, icon='color', 'Shape &Fill Color', self.chshapeFillColor, icon='color',
tip='Change the fill color for this specific shape', enabled=False) tip='Change the fill color for this specific shape', enabled=False)
fill_drawing = action(
'Fill Drawing Polygon',
lambda x: self.canvas.setFillDrawing(x),
None,
'color',
'Fill polygon while drawing',
checkable=True,
enabled=True,
)
fill_drawing.setChecked(True)
# Lavel list context menu. # Lavel list context menu.
labelMenu = QtWidgets.QMenu() labelMenu = QtWidgets.QMenu()
...@@ -379,6 +389,7 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin): ...@@ -379,6 +389,7 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
save, saveAs, close, None, quit)) save, saveAs, close, None, quit))
addActions(self.menus.help, (help,)) addActions(self.menus.help, (help,))
addActions(self.menus.view, ( addActions(self.menus.view, (
fill_drawing, None,
hideAll, showAll, None, hideAll, showAll, None,
zoomIn, zoomOut, zoomOrg, None, zoomIn, zoomOut, zoomOrg, None,
fitWindow, fitWidth)) fitWindow, fitWidth))
......
import copy
from qtpy import QtGui from qtpy import QtGui
import labelme.utils import labelme.utils
...@@ -174,14 +176,12 @@ class Shape(object): ...@@ -174,14 +176,12 @@ class Shape(object):
def copy(self): def copy(self):
shape = Shape(self.label) shape = Shape(self.label)
shape.points = [p for p in self.points] shape.points = [copy.deepcopy(p) for p in self.points]
shape.fill = self.fill shape.fill = self.fill
shape.selected = self.selected shape.selected = self.selected
shape._closed = self._closed shape._closed = self._closed
if self.line_color != Shape.line_color: shape.line_color = copy.deepcopy(self.line_color)
shape.line_color = self.line_color shape.fill_color = copy.deepcopy(self.fill_color)
if self.fill_color != Shape.fill_color:
shape.fill_color = self.fill_color
return shape return shape
def __len__(self): def __len__(self):
......
...@@ -33,6 +33,8 @@ class Canvas(QtWidgets.QWidget): ...@@ -33,6 +33,8 @@ class Canvas(QtWidgets.QWidget):
# polygon, rectangle, line, or point # polygon, rectangle, line, or point
_createMode = 'polygon' _createMode = 'polygon'
_fill_drawing = False
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.epsilon = kwargs.pop('epsilon', 11.0) self.epsilon = kwargs.pop('epsilon', 11.0)
super(Canvas, self).__init__(*args, **kwargs) super(Canvas, self).__init__(*args, **kwargs)
...@@ -70,6 +72,12 @@ class Canvas(QtWidgets.QWidget): ...@@ -70,6 +72,12 @@ class Canvas(QtWidgets.QWidget):
self.setMouseTracking(True) self.setMouseTracking(True)
self.setFocusPolicy(QtCore.Qt.WheelFocus) self.setFocusPolicy(QtCore.Qt.WheelFocus)
def fillDrawing(self):
return self._fill_drawing
def setFillDrawing(self, value):
self._fill_drawing = value
@property @property
def createMode(self): def createMode(self):
return self._createMode return self._createMode
...@@ -486,14 +494,13 @@ class Canvas(QtWidgets.QWidget): ...@@ -486,14 +494,13 @@ class Canvas(QtWidgets.QWidget):
if self.selectedShapeCopy: if self.selectedShapeCopy:
self.selectedShapeCopy.paint(p) self.selectedShapeCopy.paint(p)
if ( if (self.fillDrawing() and self.createMode == 'polygon' and
self.createMode == 'polygon' and self.current is not None and self.current is not None and len(self.current.points) >= 2):
len(self.current.points) >= 2 drawing_shape = self.current.copy()
): drawing_shape.addPoint(self.line[1])
realTimeShape = self.current.copy() drawing_shape.fill = True
realTimeShape.addPoint(self.line[1]) drawing_shape.fill_color.setAlpha(64)
realTimeShape.fill = True drawing_shape.paint(p)
realTimeShape.paint(p)
p.end() p.end()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册