簡易 grep version 3

2019/05/07 11:54 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
empPyQtyで画像にsvgの矢印を入れる
hogetta# はじめに
自分で撮ったスクリーンショットに矢印を入れてみたくなりました
矢印は自由変形でも劣化しないようにベクター系にしたい
そうなるとペイント系とドロー系の2種類の画像を扱うことになります
Qtの画像処理には様々なものがあり、他のライブラリを頼らずにQtだけで十分イケますが、すっきりしたチュートは見つけることが出来なかったので、書いてみることにしました
間違いがあったら指摘いただけると嬉しいです
よろしくお願いします
## コード
まずコードを全て乗せます
解説的なものはそのあとで書かせていただきます
pyファイルは一つです
すぐ実行委出来るように、素材の矢印ファイルも書いておきます
背景画像は自分で用意してください
600*400 くらいが良いと思います

---コード----


## 基本的な仕組みについて
Qtにおける画像処理について、今回のように複数の画像オブジェクトを扱う場合は、QgaphicsItem・QGraphicsScene・QGraphicsViewの仕組みを使うのが良いと思います
これらの関係の簡単な概念図を私なりに書いてみました
---------figure-------------
ちょっと面倒に見えますがコードをご覧いただいたように、全然面倒ではないです
この仕組みを使わず、適当なwidgetを用意してそこにpaintしても同じ事は出来るはずです
でもこの仕組みを利用した方が色んな事が簡単に出来る、生産性が高いってことです
## コードの全体像
メインのウインドウはQGraphicsViewになります
画像と矢印はQgaphicsItemとしてファイルから読み込んで、QGraphicsSceneに追加して、QGraphicsViewで表示します
矢印の属性を選択可・移動可にしておくだけで、マウスで簡単に移動できるようになります
矢印を拡大・回転出来るようにします
この操作はViewでもQgaphicsItem自身でも出来ます
Itemでやる場合はサブクラスを作ってコードを書くことになります
Sceneに登録するアイテムが少なければviewで操作しても良いと思うけど、多くなると管理が大変なので、アイテム自身にやらせた方が良いと思い、私はサブクラスを作って操作することにしてます



      

はじめに

自分で撮ったスクリーンショットに矢印を入れてみたくなりました
矢印は自由変形でも劣化しないようにベクター系にしたい
そうなるとペイント系とドロー系の2種類の画像を扱うことになります
Qtの画像処理には様々なものがあり、他のライブラリを頼らずにQtだけで十分イケますが、すっきりしたチュートは見つけることが出来なかったので、書いてみることにしました
間違いがあったら指摘いただけると嬉しいです
よろしくお願いします

コード

まずコードを全て乗せます
解説的なものはそのあとで書かせていただきます
pyファイルは一つです
すぐ実行委出来るように、素材の矢印ファイルも書いておきます
背景画像は自分で用意してください
600*400 くらいが良いと思います

---コード----

基本的な仕組みについて

Qtにおける画像処理について、今回のように複数の画像オブジェクトを扱う場合は、QgaphicsItem・QGraphicsScene・QGraphicsViewの仕組みを使うのが良いと思います
これらの関係の簡単な概念図を私なりに書いてみました
---------figure-------------
ちょっと面倒に見えますがコードをご覧いただいたように、全然面倒ではないです
この仕組みを使わず、適当なwidgetを用意してそこにpaintしても同じ事は出来るはずです
でもこの仕組みを利用した方が色んな事が簡単に出来る、生産性が高いってことです

コードの全体像

メインのウインドウはQGraphicsViewになります
画像と矢印はQgaphicsItemとしてファイルから読み込んで、QGraphicsSceneに追加して、QGraphicsViewで表示します
矢印の属性を選択可・移動可にしておくだけで、マウスで簡単に移動できるようになります
矢印を拡大・回転出来るようにします
この操作はViewでもQgaphicsItem自身でも出来ます
Itemでやる場合はサブクラスを作ってコードを書くことになります
Sceneに登録するアイテムが少なければviewで操作しても良いと思うけど、多くなると管理が大変なので、アイテム自身にやらせた方が良いと思い、私はサブクラスを作って操作することにしてます