#99 Article 1090 Posted at 1996/03/29 23:25:06 by みやちゃん (MAP2821) [WIN.GDI]
Subject: WindowsのGDI
Windows3.1 のGDI操作について疑問に感じたことがあります。 CreateMetaFile(NULL)で作成したDCに座標付きのメタファイル(テキストおよび 他のメタファイルをSetWindowOrgで座標指定して再生したもの)を 更に座標指定して再生、すなわち座標付きメタファイルを座標指定したDCに対して 描画しても、元のメタファイル内の座標情報が優先されてしまうのでしょうか。 データの使い回しを考えると1次イメージ、2次イメージ、印刷イメージの 3段階をとりたいのですが、2次イメージから印刷イメージを作る時に 目的としている座標へ複写されず、印刷イメージの原点に2次イメージが 複写されてしまいます。 これで2日間このプログラムが進行していない・・・・・・・・・ これが仕様なら、1次、2次のイメージをやめてループの中にフォント指定を 入れなければならず、アプリ側のバグなら原因を追求しなければなりません。 (バグと言っても、座標指定だけがコケているので可能性は薄い) とりあえず〆切なのでループで逃げましたが、予想以上に処理時間食ってるし。 **************************************************************************** でも、これって仕様だとしても、その仕様自体がバグっぽいよなぁ。 挙動を見ていると、メタファイル単位で座標を管理している上に 最終段階で実座標を出すのに個々のデータの座標で置換されている感じ。 素直に考えると、座標付きデータと言えども新しい座標に変換(累積)されるのだが。 中身のデータに座標指定があろうがなかろうが、 1個のメタファイルは1個のイメージなのだから。 それに、SetWindowOrg 自体の挙動も怪しい。 仕様では「旧座標を返す」になっているのにデバッガで返り値を見ると1になってる。 みやちゃん