2017年06月 / 05月≪ 123456789101112131415161718192021222324252627282930≫07月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

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


 |  --:--  |  スポンサー広告  |  Top↑

2009.12.26 (Sat)

ポートがちゃんと開放できたか確認したい

アラド久々に起動したけど、やっぱり相変わらずなんか重い。
回線の問題か、PCスペックの問題か・・・

快適なプレイへ - アラド戦記 Wiki*

ポート設定の確認
↑ここを参考に、ポート開放してみることに。

開けるポート
TCP 2311-2313,7001,7101-7200,10001-10100

んでまあ開放してみたんだけど、実際開放できてるか確認したくてぐぐったら


簡易TCPポートスキャンスクリプト


ここで確認してみるも、確認するポートが使われるソフトが起動して無いとダメ。
試しにアラドを起動して確認してみたものの、失敗してしまう。

ということでポート確認のためだけにポート待ちうけソフトを作った。
コンソールアプリだけど。
TCPPortListener.zip
.NETFramework3以上で。


使い方。


簡易TCPポートスキャンスクリプト

試しにここで2313を確認してみるも、失敗。
c000000_20091226225516.jpg

TCPPortListener.zipを解凍して起動。
c000001_20091226225537.jpg

ポート入れてEnter
c000002.jpg

待機開始。この状態で
c000003_20091226225541.jpg

もいっかいポート確認。成功。
c000004_20091226225542.jpg

[x]キーで停止・別のポートで待ちうけ開始できる。
[ESC]キーで終了。↓はESCキー押下時。
c000005_20091226225544.jpg

終わり。


無事空いてるのは確認できたんだけど、相変わらずアラド重い。
パソコンのせいかな。vistaだし。

↓ソースも貼っとく
スポンサーサイト


 |  23:00  |  自作アプリ  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.29 (Sat)

C#.NETでグラデーションを塗る その2

C#.NETでグラデーションを塗る
を応用して

こんなグラデーションを作りたい
hu000003.jpg
なんて時はAlpha値を利用すると便利。

作り方は
hu000000.jpg
このグラデーションと

hu000001.jpg
このグラデーションを

融合させるわけだが、後から(上から)塗るグラデーションはアルファ値をグラデーションさせるようにすると素敵に融合する。

ソースコード

private void Form1_Load(object sender, EventArgs e)
{
// 描画用Bitmap生成
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
// BitmapからGraphics取得
Graphics g = Graphics.FromImage(pictureBox1.Image);

// 白→赤のベースとなる横グラデーション
System.Drawing.Drawing2D.LinearGradientBrush lgb =
new System.Drawing.Drawing2D.LinearGradientBrush(g.VisibleClipBounds,
Color.White, Color.Red,
System.Drawing.Drawing2D.LinearGradientMode.Horizontal);
// グラデーション塗りつぶし
g.FillRectangle(lgb, g.VisibleClipBounds);

// ブラシ破棄(必要なのかは不明)
lgb.Dispose();

// アルファ値0->アルファ値255の、アルファ値のみ黒縦グラデーション
lgb = new System.Drawing.Drawing2D.LinearGradientBrush(g.VisibleClipBounds,
Color.FromArgb(0, Color.Black), Color.FromArgb(255, Color.Black),
System.Drawing.Drawing2D.LinearGradientMode.Vertical);
// 塗りつぶし
g.FillRectangle(lgb, g.VisibleClipBounds);

// 破棄
lgb.Dispose();
g.Dispose();
}


アルファ値のありがたみを感じた瞬間。


 |  02:25  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.26 (Wed)

C#.NETでグラデーションを塗る

C#.NETでグラデーションを使う場合、System.Drawing.Drawing2Dにあるグラデーションをクラスを使うみたい。

下記はフォームにPictureBoxを設置して、そこに描画してる。

赤と青の横グラデーション
b000048.jpg

private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(pictureBox1.Image);

// グラデーションブラシ 赤→青の水平(Horizontal)グラデーション
System.Drawing.Drawing2D.LinearGradientBrush lgb =
new System.Drawing.Drawing2D.LinearGradientBrush(g.VisibleClipBounds,
Color.Red, Color.Blue,
System.Drawing.Drawing2D.LinearGradientMode.Horizontal);

// 塗りつぶし
g.FillRectangle(lgb, g.VisibleClipBounds);

// 破棄
lgb.Dispose();
g.Dispose();
}




3色以上の複数色グラデーションを書く場合、
System.Drawing.Drawing2D.ColorBlendで細かく指定する。
PositionsとColorsの要素数は同じにしないとエラーになる。

シアン、マゼンタ、イエローの横三色グラデーション
b000050.jpg

private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(pictureBox1.Image);

// グラデーションブラシ
System.Drawing.Drawing2D.LinearGradientBrush lgb =
new System.Drawing.Drawing2D.LinearGradientBrush(g.VisibleClipBounds,
Color.Red, Color.Blue,
System.Drawing.Drawing2D.LinearGradientMode.Horizontal);

// ColorBlendクラスを生成
System.Drawing.Drawing2D.ColorBlend cb = new System.Drawing.Drawing2D.ColorBlend();
// 色変化位置(最後の要素は1.0fになるようにするらしい)
cb.Positions = new float[] { 0.0f, 0.5f, 1.0f };
// 色指定
cb.Colors = new Color[] { Color.Cyan, Color.Magenta, Color.Yellow };

// ブラシのInterpolationColorsに設定
lgb.InterpolationColors = cb;

// 塗りつぶし
g.FillRectangle(lgb, g.VisibleClipBounds);

// 破棄
lgb.Dispose();
g.Dispose();
}



 |  18:35  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.05.16 (Fri)

C#.NETでワイルドカードを使用して文字列検索したい

C#.NETでワイルドカードを使いたいけど、ファイルの取得時くらいにしか対応してない。
文字列の検索でワイルドカードを使用したいので、Regex(正規表現)クラスを利用して検索することに。

まずワイルドカードを正規表現に変換する。
Regex.Replaceで"?"と"*"だけ変換するのにつかうデリゲートメソッドを宣言。
デリゲートとかよくわからない

/// <summary>
/// ワイルドカードの検索文字列を正規表現に変換する
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
private static string WildCardMatchEvaluator(System.Text.RegularExpressions.Match m)
{
    string s = m.Value;
    // ?は任意の1文字
    if (s.Equals("?")) return ".";
    // *は任意の文字列
    else if (s.Equals("*")) return ".*";
    // それ以外はエスケープ
    else return System.Text.RegularExpressions.Regex.Escape(s);
}


Match.Replaceと上記のメソッドを使ってwcPattern(ワイルドカード)->rPattern(正規表現)に変換。
MatchEvaluator型をnewして使う。

string rPattern = System.Text.RegularExpressions.Regex.Replace(wcPattern, ".", 
    new System.Text.RegularExpressions.MatchEvaluator(WildCardMatchEvaluator)); 


rPatternにはwcPatternの「?」が「.」に、「*」が「.*」に変換された文字が入ります。
「+」とか「(」とかが入っていた場合はエスケープされます。「\+」とか「\(」

あとはrPatternを使って正規表現で検索するなり好きに

if (System.Text.RegularExpressions.Regex.IsMatch(str, rPattern))
{
    MessageBox.Show("まっちした");
}




 |  13:27  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.02.28 (Thu)

ユーザーコントロールのプロパティ

ユーザーコントロールを追加したとき、
プロパティはやっぱりプロパティウィンドウで設定できると便利。

C#.NETは、パブリックなプロパティを追加すれば自動的にプロパティウィンドウに表示されるみたい。
なんと便利な!
ついでにカテゴリとかデフォルト値とか説明を設定するとなお便利。

例)
下記のようなプロパティを追加し、ビルドする。

using System.ComponentModel;
/// 
/// 新しいプロパティ
/// 

[DefaultValue("デフォルト")]
[Category("カテゴリああああ")]
[Description("新しいプロパティの説明のところええああ")]
public string newProperty
{
    get { return str; }
    set { str = value; }
}


ユーザーコントロールを適当なフォームとかに乗っけて、プロパティウィンドウを見てみると
image20.jpg

追加したプロパティがある。カテゴリ、説明部分も設定したとおりに表示されている。

値を「デフォルト」から「デフォルトじゃない」にすると、他のカテゴリ同様太字(デフォルト値でない表示)になる。
image21.jpg


ほんと親切にできてるなあと感心する。


 |  23:51  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑
 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。