ベクタパス作成ツール 2 version 4
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
hogettaベクタパス作成ツール 2
# オブジェクトベースに書き直し
190718
- 日中調べたことを家で実験、概ね思ったとおりなので、Qtのパスオブジェクトを直接操作する方向で進めることが出来そう
- 保存も出来たので今後幅が広がると思う
**今更だけどQtは凄いです**
## パスオブジェクトのエレメント
- パスのエレメントのメンバーは type,x,y の三つだけ、これを出力した結果が以下で、前回の矢印のパスのデータです
- タイプの種類は次の通り
QPainterPath.MoveToElement 0
QPainterPath.LineToElement 1
QPainterPath.CurveToElement 2
QPainterPath.CurveToDataElement 3
座標をポイント p とコントロールポイント cp にわけたとして、cpは全て3だと思ってたけどそこは違う
矢印がpになるが、ベジェでいうと
format: 0 x: 251.0 y: 45.0 <---
format: 2 x: 288.0 y: 118.0
format: 3 x: 341.0 y: 191.0
format: 3 x: 356.0 y: 233.0 <---
format: 2 x: 322.0 y: 209.0
format: 3 x: 301.0 y: 200.0
format: 3 x: 281.0 y: 193.0 <---
format: 2 x: 279.0 y: 263.0
format: 3 x: 241.0 y: 432.0
format: 3 x: 173.0 y: 488.0 <---
format: 2 x: 214.0 y: 416.0
format: 3 x: 226.0 y: 239.0
format: 3 x: 221.0 y: 193.0 <---
format: 2 x: 198.0 y: 199.0
format: 3 x: 179.0 y: 207.0
format: 3 x: 145.0 y: 224.0 <---
format: 2 x: 179.0 y: 186.0
format: 3 x: 223.0 y: 125.0
format: 3 x: 251.0 y: 45.0
```
def pathsave(self):
fname=os.path.join(os.path.dirname(__file__) , 'qtsave')
f = QFile(fname)
f.open( QIODevice.WriteOnly )
ds = QDataStream(f)
ds.__lshift__(self.path)
f.close()
def pathload(self):
self.path=mypath(QPointF(0,0))
fname=os.path.join(os.path.dirname(__file__) , 'qtsave')
f = QFile(fname)
f.open( QIODevice.ReadOnly)
ds = QDataStream(f)
ds.__rshift__(self.path)
f.close()
self.path.makepointrect()
self.update()
``````
---
--> [PyQt でベクターオブジェクト作成ツールを作る #](https://mimemo.io/m/3Rx1XoR367le95E)
ベクタパス作成ツール
オブジェクトベースに書き直し
190718
- 日中調べたことを家で実験、概ね思ったとおりなので、Qtのパスオブジェクトを直接操作する方向で進めることが出来そう
- 保存も出来たので今後幅が広がると思う
今更だけどQtは凄いです
パスオブジェクトのエレメント
- パスのエレメントのメンバーは type,x,y の三つだけ、これを出力した結果が以下で、前回の矢印のパスのデータです
- タイプの種類は次の通り
QPainterPath.MoveToElement 0
QPainterPath.LineToElement 1
QPainterPath.CurveToElement 2
QPainterPath.CurveToDataElement 3
座標をポイント p とコントロールポイント cp にわけたとして、cpは全て3だと思ってたけどそこは違う
矢印がpになるが、ベジェでいうと
format: 0 x: 251.0 y: 45.0 <---
format: 2 x: 288.0 y: 118.0
format: 3 x: 341.0 y: 191.0
format: 3 x: 356.0 y: 233.0 <---
format: 2 x: 322.0 y: 209.0
format: 3 x: 301.0 y: 200.0
format: 3 x: 281.0 y: 193.0 <---
format: 2 x: 279.0 y: 263.0
format: 3 x: 241.0 y: 432.0
format: 3 x: 173.0 y: 488.0 <---
format: 2 x: 214.0 y: 416.0
format: 3 x: 226.0 y: 239.0
format: 3 x: 221.0 y: 193.0 <---
format: 2 x: 198.0 y: 199.0
format: 3 x: 179.0 y: 207.0
format: 3 x: 145.0 y: 224.0 <---
format: 2 x: 179.0 y: 186.0
format: 3 x: 223.0 y: 125.0
format: 3 x: 251.0 y: 45.0
def pathsave(self):
fname=os.path.join(os.path.dirname(__file__) , 'qtsave')
f = QFile(fname)
f.open( QIODevice.WriteOnly )
ds = QDataStream(f)
ds.__lshift__(self.path)
f.close()
def pathload(self):
self.path=mypath(QPointF(0,0))
fname=os.path.join(os.path.dirname(__file__) , 'qtsave')
f = QFile(fname)
f.open( QIODevice.ReadOnly)
ds = QDataStream(f)
ds.__rshift__(self.path)
f.close()
self.path.makepointrect()
self.update()
--> PyQt でベクターオブジェクト作成ツールを作る #
ベクタパス作成ツール