約 360,048 件
https://w.atwiki.jp/konohiroisekai/pages/105.html
企画段階、開発停止、実装完全未定のボスたち2 アシボソオオダマグモ(ダマグモキャノン) :フォレストの奥地に生息するPTボス 劣化ベルガモット ドドロ :フォレストの奥地に出現するPTボス 激レア素材とかの母体にしようとしたが超純魔とかにもろもろを奪われた ホーンテイル :フォレスト奥地から引越し予定の龍森エリア最奥地にあるPTクエストのボス 頭x3 羽 腕x2 足 尻尾 という8パーツからなる。 それぞれ属性が違ったりもする オメガウェポン :天空大神殿に追加予定だったが神殿自体の設定を変えてしまったためお流れに シン :廃墟に出現予定だったが、漆黒の砦を実装したために設定が変わりお流れに ガリス・ボーン船長 :NPC(予定)に変更、敵ではなくなるため戦闘する必要がなくなった 真アッカ :3体のボスを倒すと出現だったのだが、その3体事態が町の設定がかわたtりなんだりの影響でお流れに ビッグ・タイラス :フォレスト事態を一時閉鎖と考えているため予定は無くなった キャッスルフォート :大型過ぎて企画の収拾がつかなくなった 塔のような城のような要塞のような超巨大なゴーレム 倒した部分によじ登り更に上っていくPTボス ショウグンギザミ :度重なるバージョンアップにおいていかれたブルーマウンテン その奥地の火山地帯に生息するが…… グラビモス :同上
https://w.atwiki.jp/reiyonrakisutazuki/pages/266.html
チャッピー系統 アカチャッピー? ケチャッピー? テンテンチャッピー? クマチャッピー? チビクマ? ベビーチャッピー ヤキチャッピー ダンゴナマズ? ハチャッピー コッパチャッピー?(*1) クイーンチャッピー? ダイオウデメマダラ? パンモドキ系統 アカコチャッピー? ユキチャッピー テンコチャッピー? パンモドキ? オオパンモドキ? トックリ系統 ブタドックリ? ミズブタ フタクチドックリ(ピクミン2) ミヤビフタクチ フタクチドックリ(ピクミン) フーセンドックリ? アオケダタラ? クモ系統 ベニショイグモ キショイグモ ルリショイグモ ムラサキショイグモ サクレショイグモ? ダマグモ? ダマグモキャノン? ゾウノアシ ヘラクレスオオヨロヒグモ 水中の生物 マロガエル イモガエル? オタマ? ヤマシンジュ シャコモドキ? ツブラメケメクジ? ケメクジ? ムシ ウジンコ♂? ウジンコ♀? トビンコ? ハオリムシ サライムシ? トテツチホカシ? サクレウラメ? エレキムシ? ハナゲイモ タマゴムシ? カマドフマ? ハンボ サンショクシジミ? コガネモチ? オオガネモチ? オナラシ? ゴロムシ? その他の生物 コマンマン? オオマンマン? ヘビガラス? アカヘビガラス? 謎の生物 ピキマキ ミウリン ミズモチ ドドロ? タマコキン? アメボウズ? 半動半植物 ペレット草 びっくり菊? ボケナメコ? ベニポンガシグサ(*2) ルリポンガシグサ キイロポンガシグサ ムラサキポンガシグサ シロポンガシグサ? ポポガシグサ 植物 ヒカリキノコ クローバー? モモフグリ タンポポ タンポポ(綿毛)? ツクシ ネコジャラシ ヒカリエノキ マーガレット ゼンマイ 若芽 その他(*3) ウジャダニ(ウジャムシ)? 赤ピキノツユクサ 紫ピキノツユクサ ピキノツユクサ赤・紫 カビダマ? 草 小石
https://w.atwiki.jp/pik3/pages/14.html
「原生生物(げんせいせいぶつ)」とは、ピクミンの住む星にいる生物の総称である。 ピクミンも含まれるが普通はピクミン以外の生物の事を指す。 ポンガシグサやペレット草のようにピクミンに直接害のない生物も含まれるため、「敵生物」とは呼ばれない。 『ピクミン』に登場する原生生物一覧 チャッピー 小チャッピー チビクマ クマチャッピー ダンゴナマズ ダイオウデメマダラ ウジンコ♂ ウジンコ♀ トビンコ ブタドックリ フーセンドックリ マロガエル イモガエル オタマ ダマグモ パンモドキ サライムシ ペレット草 ピキマキ コガネモチ ポンガシグサ ボケナメコ ヤマシンジュ ヘビガラス フタクチドックリ ミウリン ミズモチ ドドロ 『ピクミン2』に登場する原生生物一覧 アカチャッピー ケチャッピー テンテンチャッピー アカコチャッピー ユキチャッピー テンコチャッピー クマチャッピー チビクマ ベビーチャッピー ヤキチャッピー ダンゴナマズ ハチャッピー ブタドックリ ミズブタ フタクチドックリ ミヤビフタクチ フーセンドックリ アオケダタラ タマコキン コガネモチ オオガネモチ オナラシ ウジンコ♀ ウジンコ♂ トビンコ ハオリムシ ハナゲイモ エレキムシ タマゴムシ シャコモドキ サライムシ トテツチホカシ サクレウラメ カマドフマ コマンマン オオマンマン ベニショイグモ キショイグモ ルリショイグモ ムラサキショイグモ サクレショイグモ ツブラメケメクジ イモガエル マロガエル オタマ ルリポンガシグサ ベニポンガシグサ キイロポンガシグサ ムラサキポンガシグサ シロポンガシグサ ポポガシグサ びっくり菊 ハンボ サンショクシジミ ピキマキ ミウリン パンモドキ ペレット草 ヒカリキノコ クローバー モモフグリ タンポポ ツクシ ネコジャラシ ヒカリエノキ マーガレット ゼンマイ 若芽 クイーンチャッピー ヘビガラス ダマグモ ダイオウデメマダラ オオパンモドキ アカヘビガラス ダマグモキャノン ケメクジ アメボウズ ゴロムシ ゾウノアシ ヘラクレスオオヨロヒグモ
https://w.atwiki.jp/makami/pages/50.html
全99層の比較的難しいダンジョン。 ほぼ全てのアイテム・モンスターが出現し、落ちているアイテムのほとんどが未識別状態で落ちている。 難易度は高めだが、衰弱の枝、封印戦士の盾など救済アイテムが出現するので 裏白蛇島に比べると難易度はかなり落ちる。 アークドラゴンも出現するが、デビル妖精と重複するフロアは一切ない。 衰弱の枝、封印戦士の盾を入手すれば一気に難易度が下がる。 ただし落とし穴での泥棒ができないなど不利なこともある。 全99層の比較的難しいダンジョン。 階層別攻略1~2F 3~5F 6~8F 9~10F 10~11F 12~13F 14~16F 17~19F 20~24F 25~35F 36~40F 41~45F 46~50F 51~55F 56~60F 61~70F 61~65F 71F~ 76~85F 86F~99F 出現モンスター 稼ぎフロアおにぎり 合成の壺 矢 大砲の弾 ミノタウロスの斧 トド 盾印変更階 階層別攻略 1~2F 木の矢蛇が多いので、木の矢蛇を探し矢を稼いでおくと序盤は楽に進める。 稼いだ矢をどくいやん、ゲイズに撃って特技を使われる前に倒そう。 また、敵の出現する種類の関係で3階まではンドゥバが出やすい 生剣を作るためにおにぎりに余裕があるなら粘ろう。 3~5F どくいやんが厄介。矢があるなら先撃ちして、どくいやんにターンをまわさないようにしたい。 5Fはぬすっクマが出るので食料が保ちそうなら粘っても良い。 保存に余裕があれば落ちてるギタンを入れておけばガマラに盗まれる事がない。 6~8F 非常に重要な階層。にぎりへんげ(6-8F)、怪盗サル(7-9F)が出現する。 まず6Fでにぎりへんげでおにぎりを量産しよう。 落とし穴での階移動がないので歩き回りながら降りる直前にまとめて食べよう。 7-9Fでは怪盗サルで合成壺を集めていこう。 特にこの後にまじどくいやんが出現するので「消」の印を優先的に入れたい。 合成するものがなくなったなら合成の壺を入れ物にするものいい。 この階層はにぎりへんげのおかげで食料の心配もないので風が吹くまで粘ってレベルを上げたい。 トドの盾があるなら、トドをアイアントドにして分裂させて狩るトド狩りが美味しい。 トドの盾が無い場合は、ダメージを与える手段が無いと効率が悪く、 アイテムの回収ができなくなる可能性が高いので注意する事。 9~10F 鬼面ミイラ、ひまキノコ、まじどくいやんが出現。 鬼面ミイラの生まれ変わりは厄介なのでできれば阻止したい。 死能力持ちなので回復の杖も有効。 ひまキノコは通路に矢を1本置いておけばキノコがそこにひっかかるので アイテム投げの被害が減ることがある。 「消」がなければまじどくいやんも危険。 矢で先制するなどして倒したい。 10~11F 余裕があればとげタートルをアースニードルにして狩っておきたい。 トゲ攻撃に他の敵を巻き込ませる、などの方法がある。 12~13F サル2世が出現。が、ハヤブサ天狗も同時に出現する。 14~16F この階層はハヤブサ天狗が出ないのでサルの見た目はサルのまま。 17~19F ドラゴン、アイアンヘッド、ミドロが出現。 ドラゴンはアイテムを落とす確率が高いので、この階層は粘っておきたい。 20~24F サル3世が出現。2倍速で行動するため合成の壺回収がむずかしい。 (23-25F)にはスーパーゲイズとおどるポリゴンが出現する。 スーパーゲイズにメイン武器を神隠しの壺などに入れられると一気にやる気がなくなる、 とともにクリアがとても困難になるので、対峙する際にはきっちりと対策をしておこう。 またおどるポリゴンには満腹度を大量に下げられる恐れがあるため、食糧が乏しい場合は気をつけよう。 トド狩りはトドの盾や他のアイテムがないと効率が悪い。 無理にやると大事なアイテムがどこに行ったか分からないまま風が吹くので止めておいた方が無難 25~35F ミノタウロス、スカイドラゴン、エビル妖精(26-30F)、ノロージョの姉などが出現。 エビルカンガルー(26-30F)が特に凶悪。30Fまではさっさと降りても良い。 エビ妖精がいなくなる31Fからはスカイドラゴン、ミノタウロスは積極的に狩りたい。 ミノタウロスの斧は合成用に1本、余裕があるならギガタウロスの斧用に4本集めるといい。 合成の壷があるならここで武器に斧を合成するものいい。 ノロージョ姉に封印された場合、緊急を要するのでないならば ノロ姉がいなくなる35Fで解呪の巻物を使うようにしよう。 逆に言うなら緊急時に使うアイテムは手持ちしない パオパ王が出る階で開幕モンハウだった時は1ターン目で巻物を読まないと、封印されて詰む可能性がある 36~40F 盾が保護・メッキされてない場合はゲドロが怖い。 このあたりは楽に巡回できるので4世ゾーンのためにアイテムをためたい。 41~45F デビル妖精(41-50F)とにぎり元締め(41-60F)が出現。 デビル妖精の出現率は極端に低いが油断はならない。 オオイカリモンスターを発見したら地図の巻物を読んだ方が良い。 46~50F 怪盗サル4世(46-55F)が登場。(イヌワシ天狗も出るので注意。) これまでにためた合成アイテムを一気に合成し、深層で戦える装備を完成させたいところ。 ただしデビル妖精が50Fまで出現する点に注意。 51~55F デビル妖精がいなくなるので合成に集中できる。 合成する装備が無くなったら杖を合成していこう。 ここからノロージョの母が70Fまで出現し続ける。 封印対策を用意するか、封印されても良い状態を保って進みたい(アイテムを保護するなど) 装備以外は全て封印されて当然と思って進んだほうが良いかもしれない 56~60F 56Fからウホーン出現。60Fでもとじめ終了。 ここからは即降りが基本。 61~70F 再びデビル妖精が出現する。即降り推奨。 同時にデブートンも出てくる。オオイカリデブートンは大抵しゃれにならないので つかまったら 大部屋→混乱→場所替え などで一気に階段を目指そう。 ソニックケモノ対策に転び避けをもっておきたいが、ノロージョに封印されると意味を成さない。 65Fからはハイパーゲイズ、ドドロも出てくる。 オオイカリハイパーゲイズも最高レベルの危険度なのでアイテムを惜しまない。 ドドロは器数オーバーで装備が使い物にならなくなる。 矢で削るのは分裂するのでやってはいけない。確実に杖で処理した方が良い。 器数オーバーされたら能力消しの巻物で硬印を消すか装備を作り直す以外の方法はない。 ノロージョの母は70Fで出現しなくなる。 封印されたアイテムがあれば解呪の巻物を読んでおこう。 61~65F ソニックケモノに転ばされる→キノコがそれを投げる、という凶悪コンボがある。 ウホーンも居るので何が起こるかわからない。先手先手で安全策をとっていこう。 71F~ アストラルデビルが出現。 地図の巻物があれば姿が見える。 盾に識印があれば攻撃された瞬間に姿が見える。 シハンも出現する。水かけ・手放せずのペンで対処したり 壁を背にしないように戦おう。 76~85F ねむりサソリ、メガタウロスが登場。またサル4世が再登場。 跳ね返しのお守りがあるなら装備したい。 メガタウロスはかなり痛いので水筒、封印などを使いたい。 部屋の中に複数敵が居て、直線状の視界外に何か居るなら眠りサソリとして行動する。 アイテムを一つケチって命を失う事のないように。 合成するものがあればサルも利用。 どくかんべんはもう出ないので消印をここで切るのも良い。 ドドロは80Fまで。アストラルデビルは71~80F、91F~99F。 86F~99F アークドラゴンが登場。91Fからアストラルデビルとシハンが復活。 アークドラゴンはメガタウロス以上の攻撃力があるため、殴り合いはしないほうが良い。 しかしもうデビル妖精は出てこないので、いままでためたアイテムを存分に使って進んでいこう。 出現モンスター アスカ見参の白蛇島と敵分布は同じ 稼ぎフロア おにぎり 06F~08Fにぎりへんげ 20F~22Fにぎり親方 41F~60Fにぎり元締め 合成の壺 07F~09F怪盗サル 12F~16F怪盗サル2世 20F~24F怪盗サル3世 46F~55F怪盗サル4世 76F~85F怪盗サル4世 矢 04F~05Fアカゴボマー 08F~10Fコドモボマー 大砲の弾 14F~16Fおやじボマー 25F~35Fイッテツボマー ミノタウロスの斧 19F~21Fタウロス 25F~35Fミノタウロス トド 05F~07Fぬすっクマ 22F~24Fグリーンクマ 41F~45Fアイアンクマ 51F~55Fアイアンクマ 盾印変更階 71Fここから、ノロージョ系は出てこない。盾封を他の印に変えよう 71Fここから、毒かんべん系は出てこない。盾消を他の印に変えよう 81Fここから、ドドロが出てこない。能力消しの数に余裕がないならここまで取っておこう 広告対策
https://w.atwiki.jp/gods/pages/118354.html
アレグザンダーチャールズデイヴィッドドローゴモンタギュー(アレグザンダー・チャールズ・デイヴィッド・ドローゴ・モンタギュー) グレートブリテン貴族のマンチェスター公爵の一。 13代マンチェスター公。 関連: アレグザンダーマイケルチャールズデイヴィッドフランシスジョージエドワードウィリアムキンブルドローゴモンタギュー (アレグザンダー・マイケル・チャールズ・デイヴィッド・フランシス・ジョージ・エドワード・ウィリアム・キンブル・ドローゴ・モンタギュー、息子)
https://w.atwiki.jp/makami/pages/81.html
全50層の通路が存在しない壁を掘るダンジョン サトリのつるはしで掘り進み、 床に大量に落ちている回復の薬・命の薬を飲んでHPをどんどんあげていく。 全50階であること、泥棒が容易なことを考えると特殊ダンジョンの中では一番難易度が低いか。 ほとんどのフロアで店・モンスターハウスがある。 実は素手でも壁がほれる。 全50層の通路が存在しない壁を掘るダンジョン 階層別攻略 出現モンスター 稼ぎフロアおにぎり 合成の壺 矢 大砲の弾 ミノタウロスの斧 盾印変更階 階層別攻略 01F 大きめの部屋でひたすらモンスターハウスの巻物を読み、回復の薬と命の薬をどんどん飲む。 壁を掘って部屋を拡大して読むとなおよし。満腹度の採算は十分取れるので心配無用。 できれば大部屋の巻物を使いたい。 1Fとしてはいきなり強めの敵が出るが、サトリのつるはしがあるおかげでさほどきつくはないはず。 03F~04F 早くもサル登場。 25F~27F バット妖精出現。イアイ、どくやだん、アイアンクマ、オドロ、ポリゴン、サソリ、ハニーと イカらせると厄介な敵との素敵な組み合わせ。 28F~31F デビル妖精出現。 32F~36F たまらんキノコ(32F~)、不幸の薬と超不幸の薬(36F~)それらのアイテムを投げられないように気をつける。 明るくなるまで待つ、炎の中でモンスターハウスの巻物を読む、 草や矢を部屋一面にばら撒いてからモンスターハウスの巻物を読む、等々。 37F~38F さらにひまキノコ、いやすぎキノコも出現。狙っているとしか思えない。 39F ドドロ登場。 レベルが上がっているとは言え攻撃力が無く面倒くさいので消滅の巻物を投げつけたい。 40F ワナがすべて地雷と大型地雷。 41F~42F ワナがすべて地雷と大型地雷。 イッテツボマーと火炎入道(41F)、灼熱入道(42F)が登場する。 ここから眠りサソリ出現(41~46F)。 43F イッテツボマーと煉獄入道が登場。 ワナが通常に戻る。 44F~50F デビル妖精、アークドラゴン、アストラルデビルが出現。 だが、HPが高くなっているはずなのでそれほどきつくはない。 出現モンスター アスカ見参の猿奇魔天と敵分布は同じ 稼ぎフロア おにぎり 03F~04Fにぎりへんげ 09F~12Fにぎり親方 28F~35Fにぎり元締め 合成の壺 03F~04F怪盗サル 07F~12F怪盗サル2世 13F~14F怪盗サル3世 20F~24F怪盗サル3世 30F~33F怪盗サル4世 38F~40F怪盗サル4世 44F~46F怪盗サル4世 矢 04F~05Fコドモボマー 大砲の弾 07F~08Fおやじボマー 15F~21Fイッテツボマー 41F~43Fイッテツボマー ミノタウロスの斧 09F~12Fタウロス 15F~21Fミノタウロス 盾印変更階 41F以降ノロージョ系は出てこない。盾(封)を他の印に変えよう 41F以降どくいやん系は出てこない。盾(消)を他の印に変えよう 46F以降ドドロは出てこない。能力消しの数に余裕がないならここまで取っておこう 広告対策
https://w.atwiki.jp/atachi/pages/65.html
Thumbコントロールによるマウスキャプチャ [#p5c1ebaa] ドラッグアンドドロップの実装例 [#m1444451] 事前準備 [#p5bcb0c1] DragAndDropManagerの実装方針 [#x841d994] ドラッグソースとドラッグターゲット [#z002e782] フックするマウスイベント [#j8b27d19] ドラッグソースの実装 [#n00a2a57] ドラッグの開始時に行う処理 [#da9319ee] ドラッグ中の処理 [#u70ba048] DragDropの使用 [#oe107e55] Drag関係のイベントハンドラの実装 [#z9764f19] ドラッグターゲットの実装 [#z2c98887] Adornerの実装 DragAdornerの実装 [#fc1a6a2d] Adornerの表示 [#a5f7159c] ソースコード DragAndDropManager.cs WPFでは要素のドラッグアンドドロップがサポートされていないので、プログラマが自分で実装する必要があります。 ドロップについてはサポートされており、通常はWindowsのファイルをエクスプローラーなどから受け取ることを目的とした機能のようです。 Thumbコントロールによるマウスキャプチャ ThumbコントロールはWPFで実装されているドラッグアンドドロップっぽい動きをしそうなコントロールです。 WPFのVisualTreeを解析してみるとスクロールバーなどで使用されていることがわかります。 このコントロールは、マウスのキャプチャやドラッグ、リリースのタイミングでイベントを発行するためそれぞれのタイミングで行いたい処理を実装することができます。 ただし、MSDNには Thumb コントロールは、ドラッグ アンド ドロップ機能を提供しません。 とあります。 Thumbコントロールは、単にマウスキャプチャできるコントロールといえます。 Thumbコントロールを配置したパネル内で、マウスを使ってコントロールを移動することはできますが、配置したパネルを飛び出して他のパネルへデータを運ぶといった動作はできません。 ドラッグアンドドロップの実装例 多くのドラッグアンドドロップを実装するライブラリでは、singletonなドラッグアンドドロップマネージャクラス(DragAndDropManager)を定義します。 DragAndDropManagerクラスはドラッグ中のアイテムを保持したり、ドラッグ元とドラッグ先の設定を管理します。 WPFではドラッグの開始とドラッグ中のアイテムのプレビュー(Adornerとよばれる)の実装はプログラマが行います。 ドラッグが開始されてからドロップまでは.NET FrameworksのDragDropクラスが面倒をみてくれます。(といっても、ドラッグアンドドロップの情報だけ・・・) 事前準備 このページで説明しているDragAndDropManagerの名前空間はすべて「DDDevelop」です。 DragAndDropManagerの実装方針 DragAndDropManagerはsingletonなインスタンスを保持し、ドラッグ中のアイテムなどの情報を持つ。 ドラッグソースとドラッグターゲット ドラッグソースとはドラッグを開始するPanelの事です。Panelクラスは.NET Franeworksで背景を持つUIElementです。 ドラッグターゲットとはドラッグしたデータをドロップすることのできるPanelです。 今回実装するドラッグアンドドロップは、ドラッグソースがドラッグが可能であることを設定するところ(IsAllowDrag)から開始します。 フックするマウスイベント DaDMgrがフックするマウスイベントには注意が必要で、WPFのイベントにはバブルイベントとトンネルイベントの2種類あります。 DaDMgrはドラッグソースが受け取ったマウスイベントを処理しなければならないため、 MouseDownやMouseOverをバブルイベントで受け取ろうとすると、ドラッグソースまでイベントが到達しない可能性があります。 (イベントのイベントルーティング項を参照) DaDMgrは必ずトンネルイベントでマウスイベントを受け取る必要があります。 ドラッグソースの実装 ドラッグソースとなるPanelは次のようにDragAndDropManager.IsAllowDragプロパティにtrueを設定する。 Grid Name="DragSourceGrid" DaD DragAndDropManager.IsAllowDrag="true" /Grid DragAndDropManagerは次のような依存関係プロパティを定義しており、true(または、false)の値を設定されるたびにIsAllodDragChangedハンドラが呼び出される。 public static readonly DependencyProperty IsAllowDragProperty = DependencyProperty.RegisterAttached("IsAllowDrag", typeof(bool), typeof(DragAndDropManager), new UIPropertyMetadata(false, IsAllowDragChanged)); public static bool GetIsAllowDrag (DependencyObject obj) { return (bool)obj.GetValue(IsAllowDragProperty); } public static void SetIsAllowDrag(DependencyObject obj, bool value) { obj.SetValue(IsAllowDragProperty, value); } // イベントハンドラ private static void IsAllowDragChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { // ... } IsAllowDragChangedメソッドではドラッグの開始を行うためのマウスイベント(マウスの左クリックイベント PreviewMouseLeftButtonDown)などのリスナを設定します。 実装については次項から行っていきます。 ドラッグの開始時に行う処理 D Dの開始はドラッグソース内の特定のPanel内でマウスの左クリックが押された時点からとします。 Window x Class="DDDevelop.MainWindow" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" xmlns dd="clr-namespace DDDevelop" Title="MainWindow" Height="350" Width="525" Grid Grid Name="grid_DragSource" HorizontalAlignment="Left" Margin="12,12,0,12" Width="200" Background="#FFFFEBEB" DD DragAndDropManager.IsAllowDrag="True" Canvas Height="20" HorizontalAlignment="Left" Margin="108,90,0,0" Name="canvas1" VerticalAlignment="Top" Width="20" Background="#FF6572FF" / /Grid /Grid /Window #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (DD1.jpg) 青い矩形の中でマウスの左ボタンを押すとドラッグを開始し、ボタンを放すとドラッグが終了する。という動作を実装します。 // DragAndDropManager.cs private static void IsAllowDragChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { this.dragSourcePanel = sender as Panel; Contract.Requires(dragSourcePanel != null, "ドラッグソースを設定できるのはPanel型のみです"); if(Equals(e.NewValue,true)){ // ドラッグソース内でマウスの左ボタンが押されたとき dragSourcePanel.PreviewMouseLeftButtonDown += Instance.OnDragSource_PreviewMouseLeftButtonDown; // ドラッグソース内でマウスの左ボタンが離されたとき dragSourcePanel.PreviewMouseLeftButtonUp += Instance.OnDragSource_PreviewMouseLeftButtonUp; }else { // ドラッグソースではなくなった場合、リスナ登録を解放する dragSourcePanel.PreviewMouseLeftButtonDown -= Instance.OnDragSource_PreviewMouseLeftButtonDown; dragSourcePanel.PreviewMouseLeftButtonUp -= Instance.OnDragSource_PreviewMouseLeftButtonUp; } } private void OnDragSource_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Panel dragSourcePanel = sender as Panel; Contract.Requires(dragSourcePanel != null, "ドラッグソースが不正です"); if (dragSourcePanel.Children.Contains(e.OriginalSource as FrameworkElement) ){ // イベントのソースがドラッグソース内にあるか? rootWindow = Window.GetWindow(dragSourcePanel); startPoint = e.GetPosition(rootWindow); // ドラッグを開始しした座標 dragData = "何かドラッグするデータ"; Debug.WriteLine("D Dを開始"); } } private void OnDragSource_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { // D D処理を中止とする dragData = null; Debug.WriteLine("D Dを中止"); // ※ 今のところ何も処理はないので、デバッグメッセージだけを出力 } // ※DragAndDropManagerにインスタンス変数を追加 private Point startPoint; private Window rootWindow; Panel dragSourcePanel; private object dragData; IsAllowDragChangedメソッドに追加した処理は、IsAlloDragプロパティが「true」に設定された場合にドラッグソースにイベントリスナを登録し、「false」に設定された場合はドラッグソースに登録したイベントリスナを解放します。 OnDragSource_PreviewMouseLeftButtonDownメソッドはドラッグソース内でマウスの左ボタンが押された瞬間に呼び出されるイベントハンドラです。 このメソッドでは、MouseButtonEventArgs.OriginalSourceプロパティを判断しドラッグソース内の子要素でイベントが発生しているかチェックします。子要素内でイベントが発生している場合はドラッグを開始します。 そのため、図の青い矩形内で左ボタンを押すと「D Dを開始」と出力されますが、それ以外の部分で左クリックを押してもなにも起きません。 ドラッグ中の処理 次にドラッグ中の処理を追加します。 ドラッグが開始されたら、DragAndDropManagerはマウスの動きをキャプチャします。 ドラッグソース内でのマウス移動イベントを処理するイベントハンドラを追加します。 private static void IsAllowDragChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { Panel dragSourcePanel = sender as Panel; Contract.Requires(dragSourcePanel != null, "ドラッグソースを設定できるのはPanel型のみです"); if (Equals(e.NewValue, true)) { dragSourcePanel.PreviewMouseLeftButtonDown += Instance.OnDragSource_PreviewMouseLeftButtonDown; dragSourcePanel.PreviewMouseLeftButtonUp += Instance.OnDragSource_PreviewMouseLeftButtonUp; // ↓追加 dragSourcePanel.PreviewMouseMove += Instance.OnDragSource_PreviewMouseMove; } else { dragSourcePanel.PreviewMouseLeftButtonDown -= Instance.OnDragSource_PreviewMouseLeftButtonDown; dragSourcePanel.PreviewMouseLeftButtonUp -= Instance.OnDragSource_PreviewMouseLeftButtonUp; // ↓追加 dragSourcePanel.PreviewMouseMove -= Instance.OnDragSource_PreviewMouseMove; } } private void OnDragSource_PreviewMouseMove(object sender, MouseEventArgs e) { if (dragData != null) { // ドラッグしているデータがあるかどうか。 Debug.WriteLine("ドラッグ中 " + DateTime.Now); } } ドラッグを開始するとマウスの左クリックを押しながらマウスを動かすと「ドラッグ中 2010/07/01 11 15 12」のような出力が永遠と出力されます。(マウスの動きを止めると、PreviewMouseMoveイベントが発行されなくなるので表示は止まる) ただし、PreviewMouseMoveイベントを発行はドラッグソース内でマウスを動かしている間のみ行われるので、ドラッグ中にドラッグソース外へマウスカーソルを移動してしまうと、PreviewMouseLeftButtonUpやPreviewMouseMoveが発行されなくなり、おかしな動作になってしまいます。 DragDropの使用 ドラッグに関する処理は.NET Frameworksでもサポートする処理が実装されています。 DragDropクラスを使用すると、システムレベルのドロップをサポートすることができます。 ドラッグ中の処理はDragDrop.DoDragDrop()を使って行うのですが、DragDrop.DoDragDrop()の使用には注意する必要があります。DragDrop.DoDragDrop()を呼び出すとそのスレッドはDragDropによってドラッグが終了されるまでブロックされます。 DragDropを使用するとUIElementクラスのDragEnter/DragOver/DragLeaveが呼び出されるようになります。(AllowDropがセットされている場合) private void OnDragSource_PreviewMouseMove(object sender, MouseEventArgs e) { if (dragData != null) { // // rootWindowのD Dに関する設定 bool oldAllowDrop = this.rootWindow.AllowDrop; rootWindow.AllowDrop = true; rootWindow.DragEnter += OnRootWindow_DragEnter; // ※後述 rootWindow.DragOver += OnRootWindow_DragOver; // ※後述 rootWindow.DragLeave += OnRootWindow_DragLeave; // ※後述 // ドラッグアンドドロップのデータ // DataObjectクラスを使用する。 DataObject dddata = new DataObject(DataFormats.StringFormat, this.dragData); //------------------ // ドラッグアンドドロップ開始 DragDropEffects effects = DragDrop.DoDragDrop( (DependencyObject)sender, dddata, DragDropEffects.Move); // DragDrop.DoDragDropは、ドラッグが終了するまでスレッドはブロックされる //---------------- // ドラッグアンドドロップ終了 // // rootWindowのD Dに関する設定を復帰 this.rootWindow.AllowDrop = oldAllowDrop; // AllowDropの値を元に戻す rootWindow.DragEnter -= OnRootWindow_DragEnter; rootWindow.DragOver -= OnRootWindow_DragOver; rootWindow.DragLeave -= OnRootWindow_DragLeave; this.dragData = null; } } ドラッグアンドドロップを行うデータ形式については、任意のオブジェクトか、他のアプリケーションへもデータを渡すことができるDataObjectクラスを使用します。D Dがアプリケーション内だけで完結するのならば好きな型で問題ありません。 他のアプリケーションにデータを渡すようなD Dの場合には、共通のデータ形式名をDataObjectに渡すことで、ドロップ先のアプリケーションがそのデータ形式名のデータを受け取るように実装されていれば、アプリケーション間でD Dを使ってデータの引き渡しができます。 今回はアプリケーション内でのD Dの説明ということで、D Dのデータ形式についてはこれ以上は追求しません。 Drag関係のイベントハンドラの実装 rootWindowのDragEnter・DragOver・DragLeaveに設定したイベントハンドラです。 具体的な実装はまだ行っていませんが、デバッグプリントによってある程度の流れはつかめるハズです。 e.Handledはイベントルーティングを停止するかのフラグです。 DragEnter/DragOver/DragLeaveはバブル型イベントで、今回の場合VisualTreeの下位階層にイベントを伝える必要がないため、これ以上のイベントルーティングを停止させています。 private void OnRootWindow_DragEnter(object sender, DragEventArgs e) { Debug.WriteLine("OnRootWindow_DragEnter"); e.Effects = DragDropEffects.None; // マウスカーソルの形状をドロップ不可能に。 e.Handled = true; // イベントを処理したことを通知(イベントルーティングの停止) } private void OnRootWindow_DragOver(object sender, DragEventArgs e) { Debug.WriteLine("OnRootWindow_DragOver"); e.Effects = DragDropEffects.None; // マウスカーソルの形状をドロップ不可能に。 e.Handled = true; // イベントを処理したことを通知(イベントルーティングの停止) } private void OnRootWindow_DragLeave(object sender, DragEventArgs e) { Debug.WriteLine("OnRootWindow_DragLeave"); e.Handled = true; // イベントを処理したことを通知(イベントルーティングの停止) } ドラッグターゲットの実装 ドラッグターゲットとはD Dのドロップ先のことです。 これまではドラッグを開始するための実装を行ってきましたが、次にドラッグ中のデータを受け取るための受け取り側の実装を行います。 ドラッグ可能なパネルにはIsAllowDropプロパティを「true」とすることで、ドラッグターゲットとしてDragAndDropManagerに登録します。 ドロップターゲットでのマウス処理は、DragDrop.DoDragDrop()を使用しているためマウスイベントを処理するにではなくDragEnterやDragLeaveなどのイベントを処理します。 ドロップターゲットの実装はドロップソースの時と同じなので、詳しい説明は省略します。 public static readonly DependencyProperty IsAllowDropProperty = DependencyProperty.RegisterAttached("IsAllowDrop", typeof(bool), typeof(DragAndDropManager), new UIPropertyMetadata(false, IsAllowDropChanged)); public static bool GetIsAllowDrop(DependencyObject obj) { return (bool)obj.GetValue(IsAllowDropProperty); } public static void SetIsAllowDrop(DependencyObject obj, bool value) { obj.SetValue(IsAllowDropProperty, value); } private static void IsAllowDropChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { Panel dragTargetPanel = sender as Panel; Contract.Requires(dragTargetPanel != null, "ドラッグターゲットを設定できるのはPanel型のみです"); if (Equals(e.NewValue, true)) { dragTargetPanel.AllowDrop = true; dragTargetPanel.PreviewDragEnter += Instance.OnDragTarget_PreviewDragEnter; dragTargetPanel.PreviewDragOver += Instance.OnDragTarget_PreviewDragOver; dragTargetPanel.PreviewDragLeave += Instance.OnDragTarget_PreviewDragLeave; dragTargetPanel.PreviewDrop += Instance.OnDragTarget_PreviewDrop; } else { dragTargetPanel.AllowDrop = false; dragTargetPanel.PreviewDragEnter -= Instance.OnDragTarget_PreviewDragEnter; dragTargetPanel.PreviewDragOver -= Instance.OnDragTarget_PreviewDragOver; dragTargetPanel.PreviewDragLeave -= Instance.OnDragTarget_PreviewDragLeave; dragTargetPanel.PreviewDrop -= Instance.OnDragTarget_PreviewDrop; } } private void OnDragTarget_PreviewDrop(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { // TODO ドロップしたときの処理を追加する e.Handled = true; // イベントを処理したことを通知 } } private void OnDragTarget_PreviewDragOver(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { } e.Handled = true; } private void OnDragTarget_PreviewDragEnter(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { } e.Handled = true; } private void OnDragTarget_PreviewDragLeave(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { } e.Handled = true; } ドラッグターゲットがD Dされてきたデータに対して何らかの処理を追加する箇所が、OnDragTarget_PreviewDropとなります。 OnDragTarget_PreviewDragOver/OnDragTarget_PreviewDragEnter/OnDragTarget_PreviewDragLeaveは今のところ追加する処理はありません。 ここには、まだ実装していないD Dの重要な部分であるAdornerの制御を記述します。 Adornerの実装 これまで実装してきたD Dは、確かにD Dとしてデータのやりとりができていましたが、ビジュアルの実装を行っていません。 Adornerを実装してよりD Dらしい実装となります。 Adornetとは、Windowsエクスプローラーでファイルをドラッグアンドドロップ使用とした場合にマウスに追従するものを指します。 Adornerの実装にはSystem.Windows.Documents.Adornerを継承して作成します。 Adornerレイヤーというものを、AdornerLayerから取得しそこにAdornerを表示します。 描画する画像に関してはAdornerクラスを継承したクラスを作成しその中で行います。 DragAdornerの実装 public class DragAdorner Adorner { //===================================================================== #region Constructors //===================================================================== /// summary /// /// /summary /// param name="owner" /param /// param name="adornElement" /param public DragAdorner(UIElement owner, UIElement adornElement) base(owner) { _Owner = owner; Brush brush = new VisualBrush(adornElement); var rectangle = new Rectangle { Width = adornElement.RenderSize.Width, Height = adornElement.RenderSize.Height, Fill = brush, Opacity = 0.7 }; Point mousePoint = Mouse.PrimaryDevice.GetPosition(adornElement); XCenter = mousePoint.X; YCenter = mousePoint.Y; _Child = rectangle; } #endregion Constructors /// summary /// Adornerの表示座標 /// /summary /// param name="left" /param /// param name="top" /param public void SetPosition(double left, double top) { _TopOffset = top; _LeftOffset = left; UpdatePosition(); } //===================================================================== #region Properties //===================================================================== public double TopOffset { get { return _TopOffset; } set { _TopOffset = value - YCenter; UpdatePosition(); } } public double LeftOffset { get { return _LeftOffset; } set { _LeftOffset = value - XCenter; UpdatePosition(); } } #endregion Properties //===================================================================== #region Adorner Methods //===================================================================== protected override Visual GetVisualChild(int index) { return this._Child; } protected override int VisualChildrenCount { get { return 1; } } protected override Size MeasureOverride(Size finalSize) { _Child.Measure(finalSize); return _Child.DesiredSize; } protected override Size ArrangeOverride(Size finalSize) { _Child.Arrange(new Rect(finalSize)); return finalSize; } public override GeneralTransform GetDesiredTransform(GeneralTransform transform) { var result = new GeneralTransformGroup(); result.Children.Add(base.GetDesiredTransform(transform)); result.Children.Add(new TranslateTransform(_LeftOffset, _TopOffset)); return result; } #endregion Adorner Methods private void UpdatePosition() { var adorner = (AdornerLayer)Parent; if (adorner != null) adorner.Update(AdornedElement); } private double _LeftOffset; private double _TopOffset; protected UIElement _Child; protected UIElement _Owner; protected double XCenter; protected double YCenter; } コンストラクタで表示する内容を作成します。 とりあえず、ドラッグするパネルと同じ色と同じサイズの矩形を作成し、それを表示します。 Adornerの表示 DragAndDropManagerにAdornerを表示するための処理を追加します。 // DragAndDropManager.cs /// summary /// ドラッグ中のAdornerを指定の場所に表示 /// /summary /// param name="currentPosition" /param private void ShowDragAdorner(Point currentPosition) { if (dragAdorner == null) { AdornerLayer layer = AdornerLayer.GetAdornerLayer(dragSourcePanel); this.dragAdorner = new DragAdorner(dragSourcePanel, dragSourceItem); layer.Add(this.dragAdorner); } dragAdorner.SetPosition(currentPosition.X, currentPosition.Y); } /// summary /// Adornerを非表示 /// /summary private void RemoveDragAdorner() { if (dragAdorner != null) { AdornerLayer layer = AdornerLayer.GetAdornerLayer(dragSourcePanel); layer.Remove(dragAdorner); this.dragAdorner = null; } } DragAdorner dragAdorner; Adornerはドラッグを行っている最中に表示するものなので、DragOverイベントでShowDragAdorner()を呼び出します。 ShowDragAdorner()は表示する座標を引数として受け取ります。 private void OnRootWindow_DragOver(object sender, DragEventArgs e) { Debug.WriteLine("OnRootWindow_DragOver"); // ※追加 // Adornerを表示 ShowDragAdorner(new Point { X = e.GetPosition(rootWindow).X, Y = e.GetPosition(rootWindow).Y }); e.Effects = DragDropEffects.None; // マウスカーソルの形状をドロップ不可能に。 e.Handled = true; // イベントを処理したことを通知 } private void OnDragTarget_PreviewDragOver(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { // ※追加 // Adornerを表示 ShowDragAdorner(new Point { X = e.GetPosition(rootWindow).X, Y = e.GetPosition(rootWindow).Y }); } e.Handled = true; } マウスカーソルがDragTargetに設定したパネルの上にある場合は、OnDragTarget_PreviewDragOverが呼び出されます。 それ以外の箇所ではOnRootWindow_DragOverが呼び出されます。 2つのDragOverが呼び出されないのは、DropTargetがトンネル型イベントであるPreviewDragOverをリスナに登録し、そのイベントハンドラ(OnDragTarget_PreviewDragOver)で「e.Handled=true」としているためです。 Handledがtrueとなった場合は、それ以上のイベントルーティングが行われなくなります。 ソースコード DragAndDropManager.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Diagnostics; using System.Diagnostics.Contracts; using System.Windows.Documents; namespace DDDevelop { public class DragAndDropManager { private static DragAndDropManager instance; public static DragAndDropManager Instance { get { if (instance == null) { instance = new DragAndDropManager(); } return instance; } } //===================================================================== #region Constructors //===================================================================== /// summary /// デフォルトコンストラクタ /// /summary private DragAndDropManager() { } #endregion Constructors //===================================================================== #region Dependency Properties //===================================================================== public static readonly DependencyProperty IsAllowDragProperty = DependencyProperty.RegisterAttached("IsAllowDrag", typeof(bool), typeof(DragAndDropManager), new UIPropertyMetadata(false, IsAllowDragChanged)); public static bool GetIsAllowDrag(DependencyObject obj) { return (bool)obj.GetValue(IsAllowDragProperty); } public static void SetIsAllowDrag(DependencyObject obj, bool value) { obj.SetValue(IsAllowDragProperty, value); } public static readonly DependencyProperty IsAllowDropProperty = DependencyProperty.RegisterAttached("IsAllowDrop", typeof(bool), typeof(DragAndDropManager), new UIPropertyMetadata(false, IsAllowDropChanged)); public static bool GetIsAllowDrop(DependencyObject obj) { return (bool)obj.GetValue(IsAllowDropProperty); } public static void SetIsAllowDrop(DependencyObject obj, bool value) { obj.SetValue(IsAllowDropProperty, value); } #endregion Dependency Properties //===================================================================== #region Handlers //===================================================================== private static void IsAllowDragChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { Panel dragSourcePanel = sender as Panel; Contract.Requires(dragSourcePanel != null, "ドラッグソースを設定できるのはPanel型のみです"); if (Equals(e.NewValue, true)) { dragSourcePanel.PreviewMouseLeftButtonDown += Instance.OnDragSource_PreviewMouseLeftButtonDown; dragSourcePanel.PreviewMouseLeftButtonUp += Instance.OnDragSource_PreviewMouseLeftButtonUp; dragSourcePanel.PreviewMouseMove += Instance.OnDragSource_PreviewMouseMove; } else { dragSourcePanel.PreviewMouseLeftButtonDown -= Instance.OnDragSource_PreviewMouseLeftButtonDown; dragSourcePanel.PreviewMouseLeftButtonUp -= Instance.OnDragSource_PreviewMouseLeftButtonUp; dragSourcePanel.PreviewMouseMove -= Instance.OnDragSource_PreviewMouseMove; } } private static void IsAllowDropChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { Panel dragTargetPanel = sender as Panel; Contract.Requires(dragTargetPanel != null, "ドラッグターゲットを設定できるのはPanel型のみです"); if (Equals(e.NewValue, true)) { dragTargetPanel.AllowDrop = true; dragTargetPanel.PreviewDragEnter += Instance.OnDragTarget_PreviewDragEnter; dragTargetPanel.PreviewDragOver += Instance.OnDragTarget_PreviewDragOver; dragTargetPanel.PreviewDragLeave += Instance.OnDragTarget_PreviewDragLeave; dragTargetPanel.PreviewDrop += Instance.OnDragTarget_PreviewDrop; } else { dragTargetPanel.AllowDrop = false; dragTargetPanel.PreviewDragEnter -= Instance.OnDragTarget_PreviewDragEnter; dragTargetPanel.PreviewDragOver -= Instance.OnDragTarget_PreviewDragOver; dragTargetPanel.PreviewDragLeave -= Instance.OnDragTarget_PreviewDragLeave; dragTargetPanel.PreviewDrop -= Instance.OnDragTarget_PreviewDrop; } } /// summary /// ドラッグソース内でマウスの左クリックを受けた場合の実行関数 /// /summary /// param name="sender" /param /// param name="e" /param private void OnDragSource_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { this.dragSourcePanel = sender as Panel; if (dragSourcePanel.Children.Contains(e.OriginalSource as FrameworkElement) ){ dragSourceItem = e.OriginalSource as UIElement; rootWindow = Window.GetWindow(dragSourcePanel); startPoint = e.GetPosition(rootWindow); dragData = "何かドラッグするデータ"; Debug.WriteLine("D Dを開始"); } } /// summary /// ドラッグソース内でマウスの左クリックが解除された場合の実行関数 /// /summary /// param name="sender" /param /// param name="e" /param private void OnDragSource_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { // D D処理を中止とする dragData = null; Debug.WriteLine("D Dを中止"); } /// summary /// ドラッグソース内でのマウス移動の実行関数 /// /summary /// param name="sender" /param /// param name="e" /param private void OnDragSource_PreviewMouseMove(object sender, MouseEventArgs e) { if (dragData != null) { Panel dragTargetPanel = sender as Panel; Debug.WriteLine("ドラッグ中 " + DateTime.Now); // D Dのデータ DataObject dddata = new DataObject(DataFormats.StringFormat, this.dragData); bool oldAllowDrop = this.rootWindow.AllowDrop; rootWindow.AllowDrop = true; rootWindow.DragEnter += OnRootWindow_DragEnter; rootWindow.DragOver += OnRootWindow_DragOver; rootWindow.DragLeave += OnRootWindow_DragLeave; DragDropEffects effects = DragDrop.DoDragDrop((DependencyObject)sender, dddata, DragDropEffects.Move); //---------------- // D D終了の処理 RemoveDragAdorner(); rootWindow.AllowDrop = oldAllowDrop; rootWindow.DragEnter -= OnRootWindow_DragEnter; rootWindow.DragOver -= OnRootWindow_DragOver; rootWindow.DragLeave -= OnRootWindow_DragLeave; this.dragData = null; } } private void OnRootWindow_DragEnter(object sender, DragEventArgs e) { Debug.WriteLine("OnRootWindow_DragEnter"); e.Effects = DragDropEffects.None; // マウスカーソルの形状をドロップ不可能に。 e.Handled = true; } private void OnRootWindow_DragOver(object sender, DragEventArgs e) { Debug.WriteLine("OnRootWindow_DragOver"); var rootWindow = sender as FrameworkElement; ShowDragAdorner(new Point { X = e.GetPosition(rootWindow).X, Y = e.GetPosition(rootWindow).Y }); e.Effects = DragDropEffects.None; // マウスカーソルの形状をドロップ不可能に。 e.Handled = true; // イベントを処理したことを通知 } private void OnRootWindow_DragLeave(object sender, DragEventArgs e) { Debug.WriteLine("OnRootWindow_DragLeave"); e.Handled = true; } /// summary /// /// /summary /// param name="sender" /param /// param name="e" /param private void OnDragTarget_PreviewDrop(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { // TODO ドロップしたときの処理を追加する e.Handled = true; // イベントを処理したことを通知 } } private void OnDragTarget_PreviewDragOver(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { var panel = sender as UIElement; ShowDragAdorner(new Point { X = e.GetPosition(rootWindow).X, Y = e.GetPosition(rootWindow).Y }); } e.Handled = true; } private void OnDragTarget_PreviewDragEnter(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { } e.Handled = true; } private void OnDragTarget_PreviewDragLeave(object sender, DragEventArgs e) { object draggedItem = e.Data.GetData(DataFormats.StringFormat); if (draggedItem != null) { } e.Handled = true; } #endregion Handlers /// summary /// ドラッグ中のAdornerを表示 /// /summary /// param name="currentPosition" /param private void ShowDragAdorner(Point currentPosition) { if (dragAdorner == null) { AdornerLayer layer = AdornerLayer.GetAdornerLayer(dragSourcePanel); this.dragAdorner = new DragAdorner(dragSourcePanel, dragSourceItem); layer.Add(this.dragAdorner); } dragAdorner.SetPosition(currentPosition.X, currentPosition.Y); } private void RemoveDragAdorner() { if (dragAdorner != null) { AdornerLayer layer = AdornerLayer.GetAdornerLayer(dragSourcePanel); layer.Remove(dragAdorner); this.dragAdorner = null; } } DragAdorner dragAdorner; Point startPoint; UIElement dragSourceItem; Panel dragSourcePanel; Window rootWindow; object dragData; } }
https://w.atwiki.jp/aniwotawiki/pages/14282.html
登録日:2012/10/14(日) 23 59 57 更新日:2024/01/16 Tue 20 23 20NEW! 所要時間:約 3 分で読めます ▽タグ一覧 さわらぬ神に祟り無し アシンメトリー カーチャン ピクミン ピクミン2 ミウリン 不殺 不殺主義 原生生物 左右非対称 怒らせちゃダメ! 普段は温厚 ミウリンとは、ピクミンに登場する原生生物。 和名 ミウリン 左右非対称な不思議な生物。 灰色のボディに目らしき器官、短い足に平べったい手を持つ。 体表は『初代』『2』のグラフィックでは石のような質感かと思われたが、グラフィックが向上した『4』ではもふもふの毛で覆われている事が判明した。 トトロみたい。 基本的に穏やかな性格の持ち主だが、怒らせたが最後その大きな腕を振り回し地面に叩きつけて襲いかかってくる。 その性格はオリマーの奥さんそっくりらしい。 しかしピクミンを殺害する事は一切なく、ただ埋めるだけで、しかもこれによって埋まったピクミンは何故か必ず花ピクミンとなる。 オリマーメモによればコイツは捕食本能を捨てて農業で食糧を生産するほど知能が高い原生生物らしく、花ピクミンにして埋めるのも奴の育む精神故なのだろうか? 体力は高く、振り払われる他の生物と違って埋められる為、攻撃の手が緩みがちなのもそれに拍車をかけている。 無印ピクミンでは8日目以降の遭難地点にて、円形の高台に偶数日に出現する。奇数日はミズモチが同じ地点に出る。 触らない限りは無害な生物なので、奥の水辺に行きたいだけなら放置安定。 チャレンジモードの大水源でも出るが、倒す時間と生まれる数が見合わないのでスコアを伸ばすなら後回しにされやすい。 ピクミン2では地下に登場。 辺境の洞窟の地下5階では4体出現する上、その内の1体は探索キットに使えるお宝を所有している。 今作ではピクミンに気付かない限りは完全にフリーズ、後ろから触れた位では気付かない。 前作と違って植えられたピクミンをまとめてひきぬける「ひきぬきメガホン」がある為、それを入手済みならば取るに足らない相手。 また、背後から紫ピクミンを連射すれば気絶して動かないままなので、非常に倒しやすい。 ちなみに孵化に失敗したミウリンとも噂される、ピクミンにおけるトラウマ生物が1体ドドロとは ミウリン ドドロ 埋める ⇔引っこ抜く 花にする⇔枯らす といった真逆の性質が見られる。 アシが早いので捕まえたらその場で茹でる。 2〜3日は持つ。 追記・修正お願いします。 △メニュー 項目変更 この項目が面白かったなら……\ポチッと/ -アニヲタWiki- ▷ コメント欄 [部分編集] サンショクシジミとミウリンがいるエリアの安心感は異常 -- 名無しさん (2014-05-01 17 04 41) 2のコイツは自分から襲い掛かってくるか怖い -- 名無しさん (2014-10-13 16 35 50) 結局こいつは原生生物では数少ない無害な存在なのか。 -- 名無しさん (2015-02-18 10 19 39) ↑確かに、無害な存在だけど、ピクミンからしたらイマイチ利益が分かりにくかったのが運のツキ。共生するよりは食い物にした方が得が多いと判断されてしまっていると…自然は厳しい。 -- 名無しさん (2015-02-21 11 23 18) ミウリンの孵化に失敗した姿って説はクリア後のエンドロール中の図鑑で言われてた事だから根拠があるわけじゃないし、ネット発祥の都市伝説って訳でもないんだから性質が真逆だからとかの理由付けする必要とか無いだろ -- 名無しさん (2020-01-24 15 57 52) 身売りん -- 名無しさん (2020-11-03 06 14 03) ドドロとの関係をはっきりさせるためにも、オリマーには是非4でまた例の星に逆戻りして欲しい -- 名無しさん (2021-11-05 17 13 45) 4で再登場決定。何か毛深くてトトロみたいな質感になってる -- 名無しさん (2023-06-27 23 18 32) 4の待機モーションのぽけーっとしてる姿が可愛い。 -- 名無しさん (2023-08-03 01 11 46) 見るからに無害なのにお宝コンプ目指すには倒さなきゃいけないという任天堂の悪意 -- 名無しさん (2023-08-27 16 48 45) 名前 コメント
https://w.atwiki.jp/pikumin_think/pages/250.html
?科 ドドロの一種。ミズミズ池で、怪物タジタを倒した翌日以降に現れる。 アワアワドドロのように、滑るように移動し、ふだんはピクミンが触れると死ぬ。 気づいて少し経つと、他の敵の姿になり、体表は元のままだが性質が同じになる。 このときに攻撃できる。小さい敵に変身するほど数は多くなる。 種類は、チャッピー?、クマチャッピー?、小チャッピー?、チビクマ?、ウジンコ♂♀、ダイオウデメマダラ?。 「ピクミン2」発売前に考えたので、性質はどれも「ピクミン」時のものである。 時間が経つと一旦元に戻るので、弱い敵になるまでねばるとよい。 倒すとどうなったか忘れた。 新屋のピクミンの没案である。
https://w.atwiki.jp/reiyonrakisutazuki/pages/425.html
?科 ドドロの一種。ミズミズ池で、怪物タジタを倒した翌日以降に現れる。 アワアワドドロのように、滑るように移動し、ふだんはピクミンが触れると死ぬ。 気づいて少し経つと、他の敵の姿になり、体表は元のままだが性質が同じになる。 このときに攻撃できる。小さい敵に変身するほど数は多くなる。 種類は、チャッピー?、クマチャッピー?、小チャッピー?、チビクマ?、ウジンコ♂♀、ダイオウデメマダラ?。 「ピクミン2」発売前に考えたので、性質はどれも「ピクミン」時のものである。 時間が経つと一旦元に戻るので、弱い敵になるまでねばるとよい。 倒すとどうなったか忘れた。 新屋のピクミンの没案である。