先日『塗りつぶしについて』質問したものです。
多角形の塗りつぶしはおかげさまで簡単に行えるようになりました。
しかし、問題が生じました。
図形の拡大によるクリッピング処理です。
線分のクリッピング処理はできるのですが、塗りつぶしのクリッピング処理になると、単に線分のように処理するだけではうまくいきません。。。
どなたか、ご教授願います。
描画範囲が決まっていて、それ以外に描画したくないなら、リージョンを使う。
クリッピング(Cの解説&サンプル)
http://wisdom.sakura.ne.jp/system/winapi/win32/win134.html
Delphiのは、適当なのがみつからなかったので、コレ
不定形リージョンコンポーネント
http://www.vector.co.jp/soft/win95/prog/se082336.html
質問の意味がとれないのですが、クリッピングなら Canvas にリージョンを
設定するだけで、あとは自動的に行われます。前回の Mr.XRAY さんの回答
を読むと解決です。
質問の意味がとれないのですが、クリッピングなら Canvas にリージョンを
設定するだけで、あとは自動的に行われます。前回の Mr.XRAY さんの回答
を読むと解決です。
orzさま、うんとさま、
アドバイスありがとうございます。
不定形リージョンコンポーネントを今ダウンロードしたところです。
塗りつぶし関数Canvas.Polygonを利用することを前提に考えていました。
いろいろネットで検索してみたところ参考になるものがありました。
↓
http://www2.starcat.ne.jp/~fussy/algo/algo6-1.htm
http://www2.starcat.ne.jp/~fussy/algo/algo6-2.htm
ところが私にはポインタの知識もなくこれをDelphiに変換する技量がありません。
話はずれてしまうのですが、ポインタの部分をどのようにすればいいのでしょうか?
まずは、不定形リージョンコンポーネント使ってみます。
不定形リージョンは、今回のクリッピングの問題とは関係ないと思いますが。
不定形リージョンコンポーネントのソースをみましたが、
参考にはなりませんでした。
なぜなら、現在描画されているcanvasの色を判定して塗りつぶすか?を判断しているからです。
やはりこちらの方法で処理したいと思います。
↓
http://www2.starcat.ne.jp/~fussy/algo/algo6-1.htm
http://www2.starcat.ne.jp/~fussy/algo/algo6-2.htm
>ところが私にはポインタの知識もなくこれをDelphiに変換する技量がありません。
>話はずれてしまうのですが、ポインタの部分をどのようにすればいいのでしょうか?
ポインタ部分をどのようにDlphiソースに変えればよいのでしょうか?
よろしくお願いします。
うんと 2006/09/26(火) 09:55:52
> 前回の Mr.XRAY さんの回答を読むと解決です。
なんだ、前回の質問にあったのね
https://www.petitmonte.com/bbs/answers?question_id=4240
> リージョン、パスの例
> http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL01.html
ちなみに不定形リージョンコンポーネントは、Delphiでの記述方法の
参考程度に紹介しただけで、それを使いなさいという意味ではありません。
あしからず・・・。
Mr.XRAY さんの回答(上記URL)があれば、コンポーネントなんていらないでしょう。
なお、リージョンを設定できれば、必要範囲以上塗りつぶしても、
リージョンの範囲外は塗りつぶされません。
orzさま
ありがとうございます。
まだリージョンをためしていないのですが、
canvasが認識しうる範囲内の座標値データを渡すとは限らないのですが、この場合でもリージョンの設定だけで塗りつぶしがうまく行えるのでしょうか?
ミナミさんがクリッピングといってるのはどのような意味ですか?
リージョンで設定できるのは、Canvas の一部分(矩形とは限らない)だけを
描画可能にする、という意味です。外側は描画されません。
どーもさま、ありがとうございます。
>ミナミさんがクリッピングといってるのはどのような意味ですか?
描画範囲におさまるように座標を求めること?です。
リージョンに対する描画であっても、仮に線を描画したい場合はMoveTo,LineTo関数を使うと思います。そのMoveTo,LineTo関数で引数にcanvasが認識しない値を指定した場合不都合がおこります。
ここが参考になるかも
TCanvas のスケーリング
http://blog.livedoor.jp/junki560/archives/17584026.html
http://blog.livedoor.jp/junki560/archives/17632657.html
http://blog.livedoor.jp/junki560/archives/17721276.html
リージョン雛形も描画canvasにクリッピングさせるには?
と書けば良かったかもしれません。
どうにか解決しました。
canvasからはみ出る点をcanvasの端に移動させるような方法で対処できました。
みなさん、ありかとうございました。
ツイート | ![]() |