トップページ > 過去ログ > 記事閲覧
画像の反転描画について
名前:TOH 日時: 2012/04/02 18:33

画像の反転描画について質問させてください。 DrawRectExtendGraphを使用して、画像を反転して描画しているのですが DrawRectExtendGraphFを使用して同じように反転描画を行うと、出来なくなります。 例として 512*512のサイズの画像を縦横4分割、計16個に分けて描画するとします。 1, 2, 3, 4 5, 6, 7, 8 9,10,11,12 13,14,15,16 このような感じです。 DrawRectExtendGraph(x1,y1,x2,y2,SrcX,SrcY,width,height,GraphHandle,TransFlag); と記述し、SrcXとSrcYの値をもってどの画像を描画するか設定します。 その時、4番目や8番目といった右端に位置する画像を反転描画する時に SrcX + widthを行い、widthの値には、width * -1を行います。 こうする事によって、画像を反転させて描画しているのですが、先に書いたとおり DrawRectExtendGraphFを使用して同じことをすると画像が描画されません。 何故描画できないのでしょうか? 上記二つの関数の違いは、描画する位置に指定できる値が、整数か実数かの 違いだけと思っているのですが、内部的にはもっと違っているのでしょうか? 画像ソースの指定の仕方は両関数ともに同じなので、この描画方法で何故 出来ないのでしょうか? DrawRectGraphには関数自体に画像反転処理の値を指定できるようですが 画像の拡大縮小も処理に必要なのでDrawRectExtendGraphを使用しています。

Page: 1 |

Re: 画像の反転描画について ( No.1 )
名前:管理人 日時:2012/04/09 02:30

> 何故描画できないのでしょうか? DrawRectExtendGraphF の引数 SrcWidth や SrcHeight にマイナスの値が渡された場合は正常に描画できないからです > 上記二つの関数の違いは、描画する位置に指定できる値が、整数か実数かの > 違いだけと思っているのですが、内部的にはもっと違っているのでしょうか? はい、DrawRectExtendGraph と DrawRectExtendGraphF では実装は全く違います Width, Height にマイナスの値が渡されることを想定していなかったので 寧ろ DrawRectExtendGraph で意図した結果が得られてしまっているのがバグです バグなので DrawRectXXXGraph 系の関数に Width, Height の値がマイナスだった場合は エラーとして関数が -1 を返すように処理を変更しました 申し訳ありませんが描画先の座標 x1 と x2 の値を逆にすることで反転描画をするようにしてください DrawRectExtendGraphF( x2, y1, x1, y2, SrcX, SrcY, width, height, GraphHandle, TransFlag );
Re: 画像の反転描画について ( No.2 )
名前:TOH(解決) 日時:2012/04/11 00:29

なるほど、よくわかりました。 昔使っていたライブラリの画像描画関数を使って反転描画する時は ソース画像のサイズをもって反転していたので。 ありがとうございました。

Page: 1 |