夕暮ログ

C#やJavascript、最近はAndroidなんかも好きなtinqのブログ。「夕暮れログ」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Colorを書き換えるビジュアライザ

Colorはフォームアプリケーションでよく使われます。
それを簡単に書き換えるビジュアライザを作ってみます。

っといっても、前回以上に簡単です。こちらを先に紹介すべきでした。
やることはすごく簡単です。
コードはこれだけ。
using (ColorDialog cd = new ColorDialog())
{
    cd.Color = (Color)objectProvider.GetObject();
    if (windowService.ShowDialog(cd) == DialogResult.OK)
    {
        objectProvider.ReplaceObject(cd.Color);
    }
}
まず、ColodDialogを作成します。usingで囲むことでスコープ(有効範囲)を抜けた地点で確実に開放を行ってくれます。こういう場合にそれほど意味は濃くないので、忘れることもありますが、基本的につけるほうがいいです。

続いて、ColorDialog.Colorに受け取った色をセットします。
そして、ダイアログを表示。時々間違えてフォームやコモンダイアログをそのままShowDialogしちゃうことがありますが、それでも(少なくとも私の環境では動きます。

そして、その結果がOKなら、設定した色にReplaceObjectで置き換えます。

本当に簡単ですね。
Colorの変数にマウスをあわせて出たタグから虫眼鏡マークを選び、デバッガ起動。

好きな色を選択してOK
ためしに、黄色を選びます。

無事変わりました。

全コードです。
using Microsoft.VisualStudio.DebuggerVisualizers;
using System.Windows.Forms;
using System.Drawing;

[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(ColorDebugger.ColorVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(System.Drawing.Color),
Description = "Colorビジュアライザ")]   

namespace ColorDebugger
{
    public class ColorVisualizer : DialogDebuggerVisualizer
    {
        protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
        {
            using (ColorDialog cd = new ColorDialog())
            {
                cd.Color = (Color)objectProvider.GetObject();
                if (windowService.ShowDialog(cd) == DialogResult.OK)
                {
                    objectProvider.ReplaceObject(cd.Color);
                }
            }
        }

        public static void TestShowVisualizer(object objectToVisualize)
        {
            VisualizerDevelopmentHost visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(ColorVisualizer));
            visualizerHost.ShowVisualizer();
        }
    }
}

ただし、Colorにはこだわればもっといろいろできます。
たとえば、これだとアルファチャンネルには対応していません。また、元の色と比較したいり、色コードをHTMLの#000000のように表示する機能、独自の色選択、画面上から色を選択などなど。どれも大して難しい処理ではないので、また今度、気が向いたら作ってみようと思います。

ソースコードとDLLをアップしました。
「ソフトウェア & ライブラリ」からダウンロードできます
関連記事

コメント

ここをクリックしてコメントを投稿

非公開コメント

トラックバック

http://tinqwill.blog59.fc2.com/tb.php/37-4bd23a44

« next  ホーム  prev »

プロフィール

tinq tinq(もしくはTinqWill)

Sky  For   Every 改装予定

プログラミングお勉強中の高校生。月一くらいは更新したい

最新記事

カテゴリ

月別アーカイブ

検索フォーム

最新コメント

リンク

最新トラックバック

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。