1つだけ過去を変えられるとしたら?

こんにちは!現在Javaでイメージファイルに色を塗れるプログラムを作っています。
Windowsのペイントやフォトショップの塗りつぶしみたいなことができるプログラムを作りたいです。
ただ図のように四角いイメージならXとY座標によりパラメータを決め、色を塗ることはできるですが、その下のアフリカの地図ように形が複雑な場合、どのようにしてマウスクリックなので特定の形に色塗ることができるでしょうか?
お手数ですがわかる方がいれば回答よろしくお願いします。

「Java Script 色を塗れるプログ」の質問画像

A 回答 (3件)

ANo2です



No2で例に挙げたライブラリのうち、D3の例で地図の色を塗り替えているものがありましたので、ご参考まで。
ご質問の例と多少なりとも共通点があるような気がします。
http://bl.ocks.org/mbostock/4183330
    • good
    • 0

作っているところとのことなので、方法がわかればよいものと解釈しました。




『領域 塗りつぶし』などをキーに検索すれば、いろいろ見つかると思いますが・・・
自前で領域を確定してゆくなら、領域が閉鎖されていることを条件に、同一の領域内を走査することになると思われます。
各ポイントの色状態を認識する必要があるので、canvasなどを利用するのがよろしいでしょう。
http://wais.jp/high-speed-region-fill-method/
http://www.etcnotes.info/almath/algofill.html
http://fussy.web.fc2.com/algo/algo3-2.htm


一方で、境界線をどのように描画なさるのかが不明ですが、もしも、データなどを元に描画するのであれば、各図形をそのままオブジェクトとして扱えるSVGを利用すれば、走査する必要がなくなり、そのままオブジェクト内の色を指定すれば塗ることが可能ですし、その後のUIなども簡単になる可能性があります。
https://ja.wikipedia.org/wiki/Scalable_Vector_Gr …

また、SVGを扱うためのjavascriptライブラリもいろいろ作成されていますので、ご参考まで。
http://raphaeljs.com/
http://d3js.org/
https://jonobr1.github.io/two.js/
    • good
    • 1

canvasをつかえばいけそうですね


ちょっと探したらこんなとこがヒットしました
http://jsdo.it/imaya/seedfill
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!