アプリケーションウィンドウのヘッダーが透明で、ぼやけた画面の内容が表示されるWindows 7テーマを再作成する必要があります。私の考えは、画面の内容をキャプチャし、ヘッダーにぼかして表示することでした。そのため私はQQuickPaintedItemを拡張しました。ここでQPixmapペイントパフォーマンスの問題
はヘッダーです:名前が示唆するよう
class DesktopImage : public QQuickPaintedItem
{
Q_OBJECT
Q_PROPERTY(int desktopX READ desktopX WRITE setDesktopX NOTIFY desktopXChanged)
Q_PROPERTY(int desktopY READ desktopY WRITE setDesktopY NOTIFY desktopYChanged)
public:
explicit DesktopImage(QQuickItem *parent = nullptr);
void paint(QPainter *painter) override;
int desktopX() const;
void setDesktopX(int desktopX);
int desktopY() const;
void setDesktopY(int desktopY);
signals:
void desktopXChanged();
void desktopYChanged();
private:
void grabScreensContent();
private:
QPixmap mScreensContent;
int mDesktopX;
int mDesktopY;
};
grabScreensContent()メソッドを実行します。あなたはdesktopX(desktopY)を見ることができるように
DesktopContent {
id: desktop
desktopX: window.x
desktopY: window.y
width: parent.width
height: parent.height
}
プロパティがバインドされています
QML側void DesktopImage::paint(QPainter *painter)
{
QRectF target(0, 0, width(), height());
QRectF source(mDesktopX, mDesktopY, width(), height());
painter->drawPixmap(target, mScreensContent, source);
}
次のように、私はタイプを使用します。以下のようにpaint()メソッドが実装されていますwindow x(window y)プロパティを使用して、ユーザがウィンドウを移動するときに、描画する必要があるバックグラウンドの部分が適切にフェッチされるようにします。しかし、図面は予想通りに流動的ではありません。ここでの結果は次のとおりです。
誰かがパフォーマンスの改善を提案することはできますか?
なぜQQuickItemを使用しないのですか? 'QQuickPaintedItem'はシーングラフにペイントするために2つのステップを使用するので、より速くなるはずです。 – folibis
@folibis私はそれを試してみましょう。ありがとう – mkorunoski