Re: 描画した画面から新たにグラフィックハンドルを生成した ( No.1 ) |
- 名前:プチToTo 日時:2007/12/26 15:29
うっ!過去ログをよくよくみてみると
裏画面に描画するのではなく
先にMakeGraph()で作成
SetDrawScreen()で描画先を変更
書いた後に読込んだ画像を開放すればよいって気がしてきました。
すみませんもうちょっと試してみます。
うまくいったら自己完結なので削除させていただきます。
すみません・・・
|
Re: 描画した画面から新たにグラフィックハンドルを生成した ( No.2 ) |
- 名前:プチToTo 日時:2007/12/26 15:34
失敗でした・・・
SetDrawScreenではMakeGpraphで作成したハンドルを指定することはできないんですね・・・
|
Re: 描画した画面から新たにグラフィックハンドルを生成したい ( No.3 ) |
- 名前:TNT 日時:2007/12/26 19:57
一応、MakeGraphで作成した領域を描画可能領域にすることもできます。
が、色々と制約がつく上に環境によっては正常に動かないということで、あまり使わない方が良いようです。
ちょっと意図を勘違いしている可能性もありますが、多分こんな方法で解決できるかと思います。
・一旦、裏画面に合成したい画像を描画
・裏画面をファイルとして保存し、素材を解放する
・保存したファイルをLoadGraphで再度読み込む
つまり、ファイル化を経由して読み込みます。
リアルタイムで合成処理を行うのであれば重くて使い物になりませんが、
読み込み時に1回行うだけであれば十分かと思われます。
|
Re: 描画した画面から新たにグラフィックハンドルを生成した ( No.4 ) |
- 名前:プチToTo 日時:2007/12/26 21:50
TNTさんありがとうございます。
MakeGraphで描画可能領域にできるのですか・・・
でも危険となると・・・駄目ですね・・・
壁紙の上に写真を張る感じのものを作っているので
裏画面に必ず背景となる壁紙が表示されている状態なのです。
なので領域の指定がうまくいかないと裏画面を保存する方法が取れないのです(;;
GetDrawScreenGraph()を実行した後に
背景描画のためのDrawExtendGraph()を実行するとおちるので、GetDrawScreenGraph()の使い方がまずいと思うんですが・・・
もう少しがんばってみます。
TNTさんありがとうございますm(_ _)m
|
Re: 描画した画面から新たにグラフィックハンドルを生成したい ( No.5 ) |
- 名前:TNT 日時:2007/12/26 22:24
えーと、ちょっとボケてました(汗)
別にファイルとして保存しなくても、GetDrawScreenGraph()で十分なはずです。
ぱっと見た感じでは問題なさそうなのですが…
少し考えてみます。
|
Re: 描画した画面から新たにグラフィックハンドルを生成した ( No.6 ) |
- 名前:プチToTo 日時:2007/12/26 22:42
ありがとうございます
やはりGetDrawScreenGraph()でいいんですか〜
実行後にはハンドラは作成されていたました。
多分他の管理領域の処理でメモリ破壊しちゃってるのかもしれません(^^;
背景描画の後にやる予定の生成したハンドラを使った描画で落ちていれば納得がいったのですが
関係ないはずの背景の描画で落ちていたので使い方が間違っているか、現アクティブ設定の裏画面からデータを取得する前に何かやらなくては・・・と
頭がぐちゃぐちゃになって質問させていただいていました。
TNTさんありがとうございます。
突貫工事の管理領域を中心に探って見ます。
|
Re: 描画した画面から新たにグラフィックハンドルを生成したい ( No.7 ) |
- 名前:かたぱると 日時:2007/12/27 17:46
失礼ながら素朴な突っ込みを…。
GetDrawScreenGraphの説明文に
この際取りこむ画像のサイズと、取り込んだ画像を保存する グラフィックのサイズは同じでなければなりません
とあるように
GetDrawScreenGraphのサンプルの使い方は
// 画面のサイズと同じサイズのグラフィックを作成
GHandle = MakeGraph( 640 , 480 ) ;
// 画面データの取りこみ
GetDrawScreenGraph( 0 , 0 , 640 , 480 , GHandle ) ;
とあり、MakeGraphのサイズとGetDrawScreenGraphは同じになっています。
しかしながらプチToToさんの使い方は
GHandle = MakeGraph(x2 - x1, y2 - y1);
GetDrawScreenGraph(x1, y1, x2 + 1, y2 + 1, GHandle);
となっており、
仮に
x1:0
x2:640
y1:0
y2:480
とすると先ほどの式は
GHandle = MakeGraph(640, 480);
GetDrawScreenGraph(0, 0, 641, 481, GHandle);
となってしまっているのでは?
|
Re: 描画した画面から新たにグラフィックハンドルを生成した ( No.8 ) |
- 名前:プチToTo 日時:2007/12/27 18:47
うっ!
やっぱりそれですか・・・
説明文を読んで足せばいいのかなと・・・
今日は出先から戻れそうにないので明日試してみたいと思います。
かたぱるとさん また教えていただいてありがとうございます。
いただいたプログラムを見せていただいて。
すっかり三角関数を忘れている自分で驚きました(^^;
|
Re: 描画した画面から新たにグラフィックハンドルを生成した ( No.9 ) |
- 名前:プチToTo 日時:2007/12/28 12:57
かたぱるとさんのおっしゃるとおり、+1が原因でした。
たいへん申し訳ありませんでした。
TNTさん、かたぱるとさんありがとうございます。
裏画面を取得するとなぜか裏のWindowsの壁紙が取得されてしまったりしますが、
この辺はアプリの切替えのせいなのでしょう…
だいぶ完成に近づけました。
ありがとうございました。
|