• ベストアンサー

簡単なお絵描きツールのサンプルを製作中なのですが、

簡単なお絵描きツールのサンプルを製作中なのですが、 描画した線の内側をバケツツールで塗りつぶす機能を 実装しています。 【サンプルサイト】 http://wbrabit.com/kLabo/paint_test/bin/index.html 塗りつぶした際に線と塗りつぶした範囲の間にわずかな 隙間のようなものができてしまいます。 描画した線をbitmapに変換してsmoothingをかける等して みたものの状況は変わりません。 キレイに塗りつぶすにはどうすればよいのでしょうか? アドバイスをお願い致します。

  • Flash
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

1です 自分で使ってみたんですがやっぱり floodFillの時は役にたってないですね・・・ ポスタリゼーションの処理は ポスタリゼーションでしか役に立たないようです それに全部のピクセルを巡回して setPixelするのはさすがに重い スイマセン

amane123
質問者

お礼

とんでもありません。 "ポスタリゼーション"という言葉は初めて聞きました。 私にはとても思いつけなかった案で、大変参考になりました。 別途調査してみます。 ありがとうございました。

その他の回答 (1)

回答No.1

幅をW、高さをH、現状のBitmapDataをbmpDataとして for(var i=0;i<W*H;i++){ var X=i%W var Y=Math.floor(i/W) bmpData.setPixel(X,Y,trimColor(bmpData.getPixel(X,Y))) } function trimColor(orgClr:int):int{ var r:int=Math.floor(orgClr/0x010000) var g:int=Math.floor((orgClr%0x010000)/0x0100) var b:int=orgClr%0x0100 var t=64 r=Math.min(Math.round(r/t)*t,255) g=Math.min(Math.round(g/t)*t,255) b=Math.min(Math.round(b/t)*t,255) return r*0x010000+g*0x0100+b } こんな感じで色を丸めてしまうとか 場合によっては色変わったりジャギるかもしれないし コントラスト高い所だと効果ないかもしれないです

amane123
質問者

お礼

ご回答ありがとうございます。 早速試してみます。

amane123
質問者

補足

早速試させていただきました。 一つ描画を完了するごとに描画領域全画面のbitmapを作成していまして、 そこにアドバイスいただいた処理を適用してみました。 すると、動作が重くなるだけで状況に変化はありませんでした。 処理の適用箇所やタイミングが違うのでしょうか?

関連するQ&A

  • お絵描きツールを製作しています。

    お絵描きツールを製作しています。 線の描画範囲をあるオブジェクト上のみに限定するために、 MouseLeave時に線の描画イベントを削除しているのですが、 マウスをゆっくり動かして線を描画したままオブジェクト を離れるとMouseLeaveイベントが感知されずに線を描画し 続けてしまいます。 どうやらマウスの真下に描いた線があるとMouseLeaveイベント を感知しないようだとわかったのですが、こういった場合 どのように対処するべきでしょうか? 【サンプルサイト】 http://wbrabit.com/kLabo/paint_test/bin/index.html アドバイスをお願い致します。

    • ベストアンサー
    • Flash
  • ActionScript3.0でお絵かきツールを製作しようとしています

    ActionScript3.0でお絵かきツールを製作しようとしています。 その機能の一つとしてペンなどで描画した閉じられた範囲をバケツツールのようなもので 塗りつぶす機能を実装しようと考えています。 機能はごくシンプルで、このサイト(OKwave)の質問記入欄にある”お絵かき添付”の機能 に塗りつぶしの機能を追加したようなものです。 塗りつぶし機能のイメージとしてはwindowsについているpaintです。 どのような方法で実装したらよいのか、考え方程度でも結構ですのでアドバイスいただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • Flashでお絵描きアプリを作っていますが…

    現在、Adobe Flash Professional CS6でBitmapを使ったお絵描きアプリを作っているのですが途中で描画した線が消えてしまい困っています。 どなたか知恵を貸していただけないでしょうか。 現段階のプログラムは、Bitmapを配列で管理をしたくて以下のような手順で組んでいます。 1.ステージ上のボタンが押されるとイベントが発生 2.配列の1つにBitmapをnewする 3.2のBitmapDataのサイズと透過を設定しBitmapDataを作成 4.addChild()で表示 5.描画処理 1から5の手順を繰り返して配列にお絵描きの記録をとっています。 最初はうまく動いているのですが、24回以上ボタンを押した時(Bitmapを24回以上addChildすると)に、1番目に描画されたものから順に消えしまい困っています。 以下の2点がわかっていることです。 •Flash上のシュミレータ、Androidのタブレット、iPad3すべて同じ現象が起きます。 •BitmapDataのサイズを小さくしても同じ数で描画が消え始めます。 この問題で何日も悩んでいます。 どなたか、原因や対策がわかる方がいればご回答よろしくお願いします。

  • クリスタの隙間無く囲って塗るツールについて

    閲覧感謝いたします! CLIP STUDIO ASSETSにて、ありがたくも無償提供されている「隙間無く囲って塗る+消すツール 参照レイヤー用(https://assets.clip-studio.com/ja-jp/detail?id=1759451)」を使っていたのですが、どうも様子がおかしくて・・・ 書かれている説明通りにしているつもりなのですが、普通の塗りつぶしのように隙間ができてしまうのです。 たしかに全部まとめて塗った際は線の下までちゃんと塗れているのですが、 部分部分で塗ると他の塗った場所との間に隙間が出来てしまいます。 それに加え、線より内側で塗りが終わってしまうことも多々あり、なんとなく重ねて同じように囲ってみると、 回数を重ねるごとに徐々にですが範囲が広がっていくのです。 広がっていくのは仕様だと思いますが、その場合でも、線の下にはちゃんと塗られてくれず・・・ このツールセットの再インストールも2度行い、起動していたクリスタ、クリスタペイント両方とも起動しなおしても無理でした・・・ 設定をいじってみたりもしましたが直らず、とても困っています。 検索してもみましたが、この”参照用”を説明している方が見当たらなかったので、こちらで質問することにしました。 なにか解決策がありましたら、是非とも回答をよろしくお願い申し上げます

  • 初心者です。Flash MXのツールについて

    いつもお世話になっています。 つい2~3日前からFlash MXの勉強をしています。 使用環境はMac OS10.3です。 本を見ながら練習しているのですが、 分からない事があります。 1.鉛筆ツールのオプション 「ストレートにすると 三角形、円、四角など特定の図形に近い形へと自動的に認識して くれる」 …いくら円に近い形を描いても円になりません。 三角も四角も同様です。というよりも他のスムーズ、インク機能 もまったく同じような働きです。本の通りいきません。 これはFlashの問題か私の問題か…どうしたらいいでしょうか? 2.バケツツールのオプションについて 線を描いて少し隙間を作って塗りつぶししました。 ですが「小さい隙間を閉じる」「中くらい…」「大きい…」 を選択して塗りつぶしをしても塗りつぶしが実行されません。 完全に閉じた線なら塗りつぶしができますが隙間があると できないです。オプションが本の通り実行されません。 どうすればちゃんと実行されるのでしょうか? ちなみに参考書は標準Webデザイン講座 Flash MXです。 初心者のため詳しく教えていただけると助かります よろしくお願いします

    • ベストアンサー
    • Flash
  • PCでのイラスト制作について

    最近PCでイラストを描き始めたのですが、線画に隙間ができてしまう事が結構ありバケツツールで着色する際いつも面倒な事になります。 しかし隙間ができないように慎重に描くと線がガタガタになったり線が太くなったり変に固い絵になってしまったりで困ってます。 線画を隙間なく滑らかに描くコツなどはありますか?

  • Visual Web Developer 2008 Expressでの線描画

    Visual Web Developer 2008 ExpressでWebアプリを勉強しています。 Webの画面上に描画エリアを設けて、その中に線(Lineや PolyLine)の 描画をしようと思うのですが、インターネットで調べると、PictureBoxを配置して、その中に描画するように書いてあります。 しかし、Visual Web Developer 2008 Expressのツールボックスには、PictureBoxは、ありません。 (Imageならあります) JavaScriptで描画するという手もありますが、プログラム(C#)の中にPaintイベントを作成して、描画を行うようにするには、どうすればよいでしょうか? 最終的には、クライアントからデータを送って、その内容を描画するようなページにしたいと思っています。 やはりFlashを使わないと不可能でしょうか? Visual Web Developer 2008 Expressでの何か良いサンプルがありましたら、紹介していただけるとありがたいです。

  • photoshopで簡単に塗りつぶし

    Photoshop elements 9 を使ってペイントなどをしています。 単純に塗りつぶしツールで色を付けたいときに、 線画の中を塗りつぶすと、隙間ができてしまう?というか、線と塗りつぶした色とがきれいに塞がりません。 絵の事情で、今回はしぃペインターなど、お絵描き掲示板のような簡易ペインターなどのようにあえて滑らかさを省いて、バンバン隙間無く塗りつぶしたいです。 初心者なので、その方法がわかりません。 どなたか教えて下さると嬉しいです!!><

  • FLASHMX2004で色の変更が反映されません。。。

    初めて質問させていただきます。初心者かつ乱文ですので読みにくいですが、何卒汲み取っていただきお答えいただけたら嬉しいです。よろしくお願いいたします。 【環境】 OS:Windows Version:FLASH MX 2004 Professional 私のスペック:低(初心者) 【質問】 FLASHMX2004Professionalで矩形ツールで四角形を描きバケツツールにて 色を塗ろうとしたところ、色が反映されませんでした。 一度ホームページ用に利用し(HPには採用されず)それ以降、ずっと使っておりませんでした。その時はこの様な事にはなっておりませんでしたので心底動揺しております。 【状況】 矩形ツールを選択→四角を描く→緑色の四角形が描かれる →バケツツールを選択→色を変更→バケツマークを四角にあわせ クリック→色が反映されない。 試しに四角を描画後、線を全選択→線にバケツマークをあわせるといった事をしてみましたが、まったく変化なしです。 そもそも、前使った時は線も緑ではなく黒い線を描けていた様な気がします。(この線の色はレイヤーのプロパティーでアウトラインの色を変更したら黒にはできました。) 隙間が開いているのかと思い、オプションで「小さい隙間を閉じる」を クリックし再度塗りを試みたのですが、全くだめです。 試しにインクボトルツールで線を描いてみた所、アウトラインは緑で表示され中はしろ抜きで、これもまた色の変更ができません。 もう何がなんだか… 私が悪いのか、何かの偶然か… ちなみに矩形ツールで四角を描くと、そのレイヤーの色が選択される様です(レイヤー名の三つ隣(「鍵マーク」の隣の)に緑とか水色とか色が表示されており、そこの色という事です)。 長文且つ、文章の組み立てが下手で大変申し訳ありませんが、急に使う事になり、心底困っております。心優しい方、是非ご助言くださいませ。 よろしくお願い致します。

  • Wave波形の描画について

    現在C,C++を用いてwave波形の描画が出来るソフトを作成してみようと思っています。 最終的には一般的な波形データ編集ソフトと同じようなものを目指しているのですが、以下の点にてどのように実装するといいのか悩んでいます。 1、波形データを描画する 2、表示した波形データを伸縮できるようにする(縦横) 3、waveデータを再生した際に、再生位置にあわせて波形データをスクロールさせる 現在waveデータからサンプルデータ値を抽出するところまでは出来ています。 単純に1つ1つのサンプルどうしを線で結ぶという処理を大量に繰り返すという方法だととても重たくなるため別の方法を探していたところ、DirectXを使ってロードの際に波形データをテクスチャに一気に描画しておいてあとはそれを表示/加工する、といった処理が出来るのかなと思っているのですが具体的な方法がわからずに困っています。 上記実装についてご助言いただけないでしょうか。上記以外の方法でも結構でございます。 DirectXについても初心者ですのでお勧めの書籍やWebサイトなど併せて紹介していただけると非常に幸いでございます。 どうぞ宜しくお願い致します。