2008年11月 / 10月≪ 123456789101112131415161718192021222324252627282930≫12月

インフォメーション

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

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

スポンサーサイト

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


 |  --:--  |  スポンサー広告  |  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.11.21 (Fri)

型指定したList型は便利

System.Collections.Generic.List<>
このリスト型は親切かつ便利。


// string型のListオブジェクトを生成
List<string> colorNameList = new List<string>();

// Addで追加
colorNameList.Add("赤");
colorNameList.Add("オレンジ");
colorNameList.Add("黄");
colorNameList.Add("緑");
colorNameList.Add("青");
colorNameList.Add("藍色");
colorNameList.Add("紫");

// 配列[]にする場合はToArray。型指定してあるからキャスト不要
string[] colorNameArray = colorNameList.ToArray();

// 配列をコンボに追加したり
comboBox1.Items.AddRange(colorNameArray);

string msg = "";

// foreachしてみたり
foreach (string colorName in colorNameList)
{
msg += colorName + "\r\n";
}
MessageBox.Show(msg);

// リスト内検索してみたり
MessageBox.Show("緑のIndex:" + colorNameList.IndexOf("緑"));


型指定できると、キャストが不要になって楽だし安心だ。


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

2008.11.21 (Fri)

Form.ShowInTaskbarを使うとウィンドウハンドルが変わる

Form.ShowInTaskbarをfalse->trueと変えるとフォームウィンドウハンドルが変わってしまうみたい。
フォーム非表示にしてタスクトレイに入れたいなって時は、素直にVisibleを変えたほうが良いのかな。
Visibleをfalse->trueと変えてもウィンドウハンドルは変わらない。

Form.ShowInTaskbarとForm.Visibleの動作の違いは↓

【Form.ShowInTaskbar = false】
・フォームは表示されたままでタスクバーからフォームのアイコン?が消える

【Form.Visible = false】
・フォームが非表示になり、タスクバーからもフォームのアイコン?が消える

ウィンドウハンドルを変えず、フォームを表示したままでタスクバーからのみ消したい場合は
どうすればいいのかは・・・・必要になったら考える。

とりあえずAPIでフォームを操作したい場合はShowInTaskbarを使わない方がいいみたい。


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

2008.11.18 (Tue)

そういえば@cosmeに

ユーザー登録してます。
クチコミ少ないけど。

安くて入手しやすいものが中心なので良かったら参考に。
クチコミ少ないけど。

http://www.cosme.net/user/top/user_id/634525


 |  15:56  |  未分類  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.18 (Tue)

梨華が閉店・・・

激安焼肉食べ放題でお馴染みだった

焼肉レストラン梨華千代田店


11月16日で閉店しました。
ショックがでかすぎる。

激安で焼肉が腹いっぱい食える、貧乏の救世主だった梨華がいなくなってしまうなんて・・・

最後の15日のお昼と16日の夜2日連続で食べ放題の食べ納めに行ってきました。

15日のブタカルビ
TS370596.jpg

16日の夜は最後のせいか、豚カルビが品切れになっていて、
代わりに1ランク上の食べ放題メニュー「ファミリーカルビ」が出てきた。
これもなかなかうまかった。



さようなら梨華。今までたくさんお世話になったよありがとう・・・・
こんなにも閉店が悲しい店なんてあまりないよ。


これからはどこで焼肉を食えばいいんだ!!!


 |  14:29  |  外食  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.18 (Tue)

Sleipnirで一時的に特定のユーザーエージェントでURLを開く

Sleipnirで、「このURLを携帯のユーザーエージェントで開きたい」なんて時がある。
携帯のメルマガのURLをPCで開く時とか。
でも、Sleipnirでユーザーエージェントを変えた時って再起動しなきゃいけないのがめんどくさい。
再起動しないでこのURLだけを携帯として開きたいなって時に便利なスクリプトを見つけましたよ。

「アドレスバーに入力したURLを特定のユーザーエージェントで開く」スクリプト。

以下のページの「カスタムアクション」をダウンロード&.jsをscriptsフォルダへ入れる。
http://yuyulab.hp.infoseek.co.jp/download/sleipnir_script/index.html#CustomAction
「カスタムアクション.js」を開き、15行目くらいにある

var macro = ''; //アクションを記入してください。

に任意のアクションを設定すると、常にそのアクションをするスクリプトになります。

例えばアドレスバーのURLを「KDDI-TS37 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0」というユーザーエージェントで一時的に開きたい場合は以下。

var macro = '$Navigate:{AddressBarString}@User-Agent:"KDDI-TS37 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0"'; //アクションを記入してください。

※@User-Agent:以降のユーザーエージェント文字は""で囲わないとエラーになることも。
""で囲わないと空白で区切られて解釈される。


上記のように変更した「カスタムアクション.js」を任意の名前に変えると管理しやすい。(自分は「携帯のユーザーエージェントで開く.js」にしている)

使い方は、携帯のユーザーエージェントで開きたいページを開くか、アドレスバーに直接開きたいURLを入力。

Sleipnirの「スクリプト」>「(自分の場合)携帯のユーザーエージェントで開く」をクリック

そうすると再起動無しでアドレスバーに入っているURLが携帯のユーザーエージェントで開かれる。

とにかく再起動しなくて済むというのがかなりありがたいなってお話。


 |  12:04  |  パソコン  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.17 (Mon)

C#.NETからExcelを起動する時にエラー


Type tp = Type.GetTypeFromProgID("Excel.Application");
object excelApp = Activator.CreateInstance(tp);

こんなコードでExcelを起動しようとしたら

CLSID {00024500-0000-0000-C000-000000000046} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80070005。

って言うエラーが出て困った。


原因は上記のコードを実行するユーザーにExcelを起動する権限がないっぽい?
よくわからない。

よくわからないままAdministratorに上記のコードを実行してるユーザーを加えたら
なぜか動くようになったので、権限の問題っぽい。

権限の加え方は正しいのかわからないが、グループに実行ユーザーを追加してみた。
コントロールパネル>ユーザーアカウント>詳細設定タブ>ユーザー管理の詳細設定>詳細設定(V)ボタンクリック>ローカルユーザーとグループ>グループ>Administrators>実行ユーザー追加

また自分が同じようなところで引っかかりそうなんでメモってことで。


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

2008.11.14 (Fri)

カップワンタンが!

コンビニ等でよく売ってるマルちゃんの小さいカップワンタンが好き。
昔から好物だ。
おにぎりとの相性が抜群過ぎる素敵な奴だ。

コンビニにチャンピオンを買いに寄ったらこんなのが。
TS370595.jpg

でかいカップワンタン!!
緑のたぬきと同じサイズのワンタンが!!!

買いたい!が、その時400円ほどしか持っておらず、チャンピオンを買うとワンタンが買えない。
ワンタンを買うとチャンピオンが変えないという状況に。
そのコンビニのATMだと9時過ぎたら金がおろせないし。

仕方がないのでチャンピオンを立ち読みしてワンタンを買って帰ってきましたとさ。
わーい


 |  23:40  |  食べ物  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.07 (Fri)

UWSCでIEのバージョンを取得したい

UWSCでIE操作する際、IEのバージョンによってできることとかできないこととか結構ある。

IEのバージョンを取得して分岐したいなあと思ったんでIEのバージョンを取得する方法。
これを関数にするなりしたら便利かな?

下記のコードはCreateOLEObj("InternetExplorer.Application")で作られるIEのバージョンを取得し、
UWSCのPrintウィンドウに5秒表示させる処理。

IE = CreateOLEObj("InternetExplorer.Application")
FS = CreateOLEObj("Scripting.FileSystemObject")

// GetFileVersionでIEのバージョンを取得。
//IE.FullNameはiexplore.exeのフルパス
strVersion = FS.GetFileVersion(IE.FullName)

// 6.0.2900...って感じの文字なので、"."より前の肝心な部分だけ数値として取り出す
intVersion = Val(Copy(strVersion, 1, Pos(".", strVersion) - 1))

print "Version:" +intVersion

Sleep(5)


Scripting.FileSystemObjectを使って、iexplore.exeファイルからバージョンを読み取ってる仕組み。
IEオブジェクトにバージョンプロパティとかが無いのがちょっと不思議だ。
ちゃんと探してないせいかもしれないけど。
あるのかな?


 |  16:32  |  UWSC  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.07 (Fri)

VBAで独自構造体

まとまった値の保持には構造体が良いなということで、
VBAでユーザー定義した構造体を使う場合。

「Type」と「End Type」でくくって宣言すれば独自構造体。

'ユーザーデータみたいなの
Type UserData
ID As Integer
Name As String
Age As Integer
End Type

'使う場合はこんな感じ
Sub test()
Dim ud As UserData

ud.ID = 1234
ud.Name = "ueno"
ud.Age = 24

End Sub


Typeを使って宣言したらこんな感じで表示されるので便利。

b000043.jpg
b000044.jpg

ちなみにユーザー定義型を使う場合、使用箇所より上に宣言を書く必要がある。


Sub test()
'宣言より先にUserData型を使ってる
Dim ud As UserData

ud.ID = 1234
ud.Name = "ueno"
ud.Age = 24

End Sub

'宣言
Type UserData
ID As Integer
Name As String
Age As Integer
End Type

↑こんな感じで、宣言を後に書いちゃった場合は、
「ユーザ定義型は定義されていません。」っていうエラーが出るので注意。

VBA上から読んでるんだなあと感じた。

あと構造体なんでFunctionとかSubは入れられない・・・・と思う。


 |  16:23  |  VBA  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.03 (Mon)

ぎんなん亭

矢部と淵野辺の間くらいにある「ぎんなん亭」の中華丼の盛りがすごいらしいとのことで、連れと二人で行ってきた。

中華丼は大食いの連れに任せて、自分は適当に食おうと適当に「サンマーメン」を頼んだ。


そして出てきたのがこれ。






しまったーーーー!!!サンマーメンとはあんかけラーメンのことだったのか!!
そういえばそのようなラーメンだった気がする。うかつだった。
中華丼にかかってるあんと同じのがこぼれんばかりに乗ってるじゃないか!
普通盛りなのに限界って何。てかもうこぼれてるし。
連れは中華丼の大盛り頼んでるし、くいきれるか不安だった。




結果は残してしまったんだけどね。
麺は連れに手伝ってもらって食べ切り、餡をちょっと残した。
連れは中華丼大盛りを完食してた。

サンマーメンは600円だったかな?
味がくどくないので食べやすい。
とにかく腹いっぱい食べたい人にお勧め。


 |  22:42  |  外食  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.11.02 (Sun)

第37回相模原納涼花火大会

第37回相模原納涼花火大会にきりんと二人で行ってきましたよ。

自転車できりんの家まで走り、その後タクシーで行けるところまで行く。
やっぱ道は混みまくってたので途中で降りて歩いた。
徒歩だし高田橋まで降りたら帰れなくなりそうな気がしたので、高田橋へ行く前のものすごい急な坂の辺りで見てた。
ここでも結構花火が見えるので、その辺もすごい人だらけ。
花火は良かった。ほんとに良かった。
相模原も捨てたもんじゃないなと。いやあ良かった。
しかし寒かった。もっと厚着していくべきだったな。

携帯のカメラなので花火のきれいさは撮れなかったが、良い花火だったよ。
なんかストレスとか無くなった様な、いい気分。
TS370547.jpg
TS370548.jpg
TS370549.jpg
TS370550.jpg
TS370551.jpg
TS370552.jpg
TS370553.jpg
TS370554.jpg
TS370555.jpg
TS370556.jpg


帰りはバス停まで歩いていった。
途中のコンビニの駐車場でコンビニおでんを売ってたので、
思わず買った。
バス停まで歩きつつ、おでんの汁を飲む。
冷え切った体に温かいおでんの汁は美味すぎる!
ただでさえ汁部門では常に上位に位置するおでんの汁が、
この状況でさらに神がかった。
おでんありがとう。

バスできりんの家まで行って、コタツで暖まりつつおでんを食らいつつ猫をいじくらせてもらった。
時計見たら9時過ぎてたので自転車で走ってたら途中でラーメンがくいたくなった。

篤でラーメンが450円という貼紙がしてあったので篤でラーメン食ってきた。
女性の方には杏仁豆腐がサービスでもらえるらしい。
そうとは知らずに入ったので得した気分だ。

なんか平和な夜だった。行ってよかった。


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