ふらっとC#,C♯,C#(初心者用) Part23at TECH
ふらっとC#,C♯,C#(初心者用) Part23 - 暇つぶし2ch910:デフォルトの名無しさん
08/02/02 21:08:52
>>908-909
えっと使い方というか各メンバ(メソッド)の説明はあるんですが
その実際のコードはあるのかなと思いまして質問しました
MSDNライブラリってそこまでしかないですよね?

911:デフォルトの名無しさん
08/02/02 21:12:27
VS2008で見れるようになったんじゃなかったっけ

912:デフォルトの名無しさん
08/02/02 22:15:11
Image.FromFile等でアニメーションGIFを読み込めますが
複数の画像とフレーム間の時間のデータからプログラム中で
Imageを生成するにはどんな感じにすればいいのでしょうか?

913:デフォルトの名無しさん
08/02/02 22:49:31
GDI+じゃ無理
普通にタイマで描画してくんじゃ駄目なの?

914:デフォルトの名無しさん
08/02/02 23:22:01
SelectActiveFrame って使えないの?

915:デフォルトの名無しさん
08/02/02 23:37:48
既存のGIF画像になら使える

916:912
08/02/02 23:54:37
アプリケーションからはアニメーションなImageは作れないんですか…
自分でアニメーションさせてみます。
ありがとうございました。

917:デフォルトの名無しさん
08/02/02 23:56:45
Win32のPtInRectと同等の機能を持つメソッドって.NETにありますか?
今探していますが見つかりません。
Rectangleのスタティックとしてあるのかと思ったらありませんでした。

918:デフォルトの名無しさん
08/02/02 23:57:52
gifはファイル構造が比較的単純だから自前でヘッダ書いてく手もあるけどね

919:デフォルトの名無しさん
08/02/03 00:00:17
>>917
~~と同等の機能じゃなくて言葉で機能を説明しろと
まあ普通にRectangleのインスタンスメソッドにあるけどな

920:デフォルトの名無しさん
08/02/03 00:03:30
あったあったよく見てなかったわサンクス

URLリンク(msdn2.microsoft.com)(VS.80).aspx

921:デフォルトの名無しさん
08/02/03 01:33:18
サウンド関連で教えてください。
テキストボックスに入力を行った際、エンターキーを押すとシステム設定のエラー音が鳴ってしまいます。
これをプログラム上から鳴らなくするにはどうすればいいのでしょうか?
winXP sp2 で VS2005です。

922:デフォルトの名無しさん
08/02/03 01:41:29
TextBox ビープ音

923:899
08/02/03 01:46:57
自己解決しました。2008にはデザイナに項目が追加されてました。

924:デフォルトの名無しさん
08/02/03 01:50:50
課題終わらない\(^o^)/

925:デフォルトの名無しさん
08/02/03 01:54:02
>>924
先生は一人だがお前には俺らがついてる!

926:921
08/02/03 02:18:03
ググって

e.Handled = true;

としてもやっぱりBeepは消えてくれません。

927:デフォルトの名無しさん
08/02/03 11:46:23
インテリセンスで拡張メソッドが候補に表示されるときは頭に「(拡張子)」と表示される
しかしMSDNのメンバ一覧では「Extension のメソッド」として記載されてる
しかしMSDNではその他の場合は全て「拡張メソッド」
なんだこれ

928:デフォルトの名無しさん
08/02/03 11:48:48
英語版使え

929:デフォルトの名無しさん
08/02/03 13:13:04
プログラムを発行する際に 特定のファイルも自動的にインストールされるようにするにはどこに置けば良いのか教えてください

930:デフォルトの名無しさん
08/02/03 13:29:47
C#の良書があったら教えてください

931:デフォルトの名無しさん
08/02/03 13:49:58
プロパティを使うと遅くなるから
for文などの繰り返し処理の中では
使わない方がいいと聞いたんですが
そういうもんなんですか?

932:デフォルトの名無しさん
08/02/03 13:55:01
プロパティの実装による
コントロールのプロパティは中で色々やってて遅いのが多いかも
フィールドの値を返すだけの単純なプロパティならインライン展開されてほとんど変わらん

933:931
08/02/03 14:50:19
今実験してみたら300倍以上違ったwww
簡単な画像処理でテスト。

1: 12889msec
2:   38msec

1.プロパティ使いまくる場合

for (int y = 0; y < bmp.Height; y++){
for (int x = 0; x < bmp.Width; x++){
if (data[y * bmpData.Stride + x * 3] == Color.White.B){
data[y * bmpData.Stride + x * 3] = Color.Black.B;
}
}
}

2.変数を使う場合

int w = bmp.Width;
int h = bmp.Height;
int yPos;
byte white = Color.White.B;
byte black = Color.Black.B;

for (int y = 0; y < h; y++){
yPos = y * bmpData.Stride;
for (int x = 0; x < w; x++){
if (data[yPos + x * 3] == white){
data[yPos + x * 3] = black;
}
}
}

934:デフォルトの名無しさん
08/02/03 14:55:44
メンバ変数を直接使うのと
プロパティを使うのとで
比較しないと。

935:デフォルトの名無しさん
08/02/03 14:57:46
Bitmap.Width/Heightは中でアンマネージ関数呼んでる
Color.White.Bは新しいColor作成→値渡し→ビット演算
どっちも全然単純なプロパティじゃないの

936:デフォルトの名無しさん
08/02/03 15:12:41
>>933のコードはどこがボトルネック?

937:デフォルトの名無しさん
08/02/03 15:15:52
bmp.Widthとbmp.Heightかな

938:デフォルトの名無しさん
08/02/03 15:28:52
>>933
その例が極端だとしてもこれはいいこと聞いた
定数クラスに新たに用意してそれでやってみる

939:デフォルトの名無しさん
08/02/03 15:32:00
は?

940:デフォルトの名無しさん
08/02/03 15:34:52
>>939
この話がわからない子は参加しなくていいんじゃないかな

941:デフォルトの名無しさん
08/02/03 15:38:00
荒れる流れストップ

>>938が言ったことを咄嗟に>>939は想像出来なかった
また、他人に伝える意図でないものを>>938がレス内容に含めたというのにも問題がある

942:デフォルトの名無しさん
08/02/03 15:39:42
bmp.Width/Heightが
Color.White.Bよりもネックになる理由がわかりません。
どうしてですか?

943:デフォルトの名無しさん
08/02/03 15:45:10
VBのForループなら>>933の前者でも結果あまり変わらなそうだ。

まあとにかく、速度が問題になる場面では可読性犠牲にしてでも(といってもそれで低下する可読性なんてほんの僅かだろうけど)
プロパティーをキャッシュして使った方がいいってことか。

944:デフォルトの名無しさん
08/02/03 15:45:41
>>942
>>935
怪しいことしてるのはそこくらいだから

945:デフォルトの名無しさん
08/02/03 15:58:56
>>942
Color.White.Bがネックにならないのは、コンパイラがそれをリテラルに
置き換えてるからだろうけど、どうしてコンパイラはColor.White.Bの値を
定数扱いしても大丈夫だと知ることができるんだろう・・・

946:デフォルトの名無しさん
08/02/03 16:01:52
> コンパイラがそれをリテラルに置き換えてるから
頭沸いてるんですか^^;

947:デフォルトの名無しさん
08/02/03 16:02:51
>>946
君頭悪いでしょw

948:デフォルトの名無しさん
08/02/03 16:11:14
>>933
MDAの影響は排除してる?
URLリンク(forums.microsoft.com)

949:デフォルトの名無しさん
08/02/03 16:15:28
おまいら!もちつけ!
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(


950:デフォルトの名無しさん
08/02/03 16:17:40
WebBrowserって、MouseEnterのイベントをサポートしてないのか!
なぜだ!?

951:デフォルトの名無しさん
08/02/03 16:18:19
それより困るのは、ArrayList.Countじゃね?
ArrayListの実装って配列モドキのくせに
CountにO(N)かかるんだけど・・・
一度それでハマったことがある

952:デフォルトの名無しさん
08/02/03 16:20:13
は?

953:デフォルトの名無しさん
08/02/03 16:22:13
>>951
さすがにそれは嘘だろうと思ってソース見てみたら変数の内容返してたよ。
というわけで少なくとも最新版のArrayListではO(1)。
ソース公開便利だね!

954:デフォルトの名無しさん
08/02/03 16:29:53
>>953
そうなんだ
昔のArrayListで
while(al.count > 0){
・・・O(N)の処理
}
ってやったらやたら時間がかかって、
しばらく悩んでたらArrayList.countがO(N)で、O(N^2)になってたことがある
このときは死ねよと思ったが改善されたなら良かった

955:デフォルトの名無しさん
08/02/03 16:33:21
WebBrowserでMouseEnterを受け付ける方法ってありますか?
もしくは、WebBrowserの親に通知する方法とか。

956:デフォルトの名無しさん
08/02/03 16:34:11
処理に時間のかかるプロパティは作るな!っていうMSのガイドラインがあるけど
あんまり守られてないなw

957:デフォルトの名無しさん
08/02/03 16:34:46
forとwhileの違いを教えてください

下記のところを読んでも違いがよくわかりませんでした
ひょっとしてforはいらない子なのでしょうか?

URLリンク(d.hatena.ne.jp)


958:デフォルトの名無しさん
08/02/03 16:37:18
それを肯定したらC#の存在意義がなくなる
foreachもいらないLINQもいらないプロパティもデリゲートもいらない

959:デフォルトの名無しさん
08/02/03 16:37:45
>>956
根本的な疑問。

「作るな!」って宣言すれば、本質的に重い処理にならざるを得ないプロパティが
軽くなるの?w

960:デフォルトの名無しさん
08/02/03 16:38:30
>>957
むしろwhileがいらない子なんじゃないの

961:デフォルトの名無しさん
08/02/03 16:41:20
>>959
重い処理はメソッドにする
プロパティだとなんとなくループ中に繰り返し呼び出してもOKかな?という感じがあるから
URLリンク(msdn.microsoft.com)

962:デフォルトの名無しさん
08/02/03 16:45:03
>プロパティだとなんとなくループ中に繰り返し呼び出してもOKかな?という感じがある
むしろその感覚の方を修正すべきなのでは?
だってそれは単なる願望であって、現実的な認識じゃないでしょ。

963:957
08/02/03 16:48:02
とくに違いはないということでよろしいのでしょうか?(´・ω・`)

964:デフォルトの名無しさん
08/02/03 16:48:58
たしかに、プロパティにルーティンをかけるけど、
実際にどのレベルまで書いていいのかな?って悩む時はあるね。

基本的にメソッドと同じくらいの処理はかけるわけで。。。

965:デフォルトの名無しさん
08/02/03 16:52:02
get には return 文しか書けないよう、
set には1文しか書けないよう制限すればいいのに。

966:デフォルトの名無しさん
08/02/03 17:01:08
コントロールのプロパティは仕方ないとしても
Bitmap.Widthはコスト無いと思うだろ普通

967:デフォルトの名無しさん
08/02/03 17:01:22
setだって、配列データをobjectとして渡して、中で分解して使うようにすれば、
実質複数の引数を渡してるのと同じことができるからな。

メソッドと変わりはあんまないような。
つまり、線引きの問題だよな。

968:デフォルトの名無しさん
08/02/03 17:01:27
>>965
本末転倒でしょそれは。
プロパティの目的はOOP的な思考モデルに実際のコーディングを近づけることにあるんであって、
処理の効率化のためではない。


969:デフォルトの名無しさん
08/02/03 17:03:11
素朴な疑問なんだけど
MSのガイドラインに背いてまで、メソッドではなくプロパティで重い処理をしなければならない
本質的な理由にはどんなものがあるのかな

970:デフォルトの名無しさん
08/02/03 17:05:27
do-whileがあればいいのに

971:デフォルトの名無しさん
08/02/03 17:05:59
>>969
問題は重いと重くないの境目でしょ。

972:デフォルトの名無しさん
08/02/03 17:07:11
>>969
セッターでセットした時にクラス使用者には意識させず対象プロパティ以外の値を変更したいとき


973:デフォルトの名無しさん
08/02/03 17:07:32
今日の話は勉強になった。
次スレも期待

974:デフォルトの名無しさん
08/02/03 17:08:11
>>969
愚問だね。
その方がライブラリの使用者にとって直感的なインターフェイスだからでしょ。


975:デフォルトの名無しさん
08/02/03 17:09:51
基本的には、1つに対してのget,setのみの使用でしょう。

976:デフォルトの名無しさん
08/02/03 17:12:55
>>955
TrackMouseEvent

977:955
08/02/03 17:18:56
>>976
あぁ、まさにそれです。

URLリンク(www.thescripts.com)
ここに書かれてる内容こそが、今私が悩んでいるところです。
熟読してみます。
どうも。

978:955
08/02/03 17:30:10
やっかいですね。
これはMFCのプログラミングになっちゃいます。

WM_NCMOUSELEAVEをC#側でdefineしないといけないってことか。

979:デフォルトの名無しさん
08/02/03 17:32:34
>>974
しかしプロパティの取得に時間がかかるのは直感的ではない、とw

980:955
08/02/03 17:35:47
const int WM_CLOSE = 0x0010;
const int WM_ENDSESSION = 0x16;
const int WM_SYSCOMMAND = 0x112;
const int SC_CLOSE = 0xF060;

のリストが掲載されているWebページってありますか?
もちろん今自分で探していますけど。。。

981:デフォルトの名無しさん
08/02/03 17:37:51
素直にWindows SDK入れとけよ

982:デフォルトの名無しさん
08/02/03 17:38:11
>>980
WinUser.h

983:955
08/02/03 17:38:40
見つけたけど、肝心の値がないw orz

URLリンク(msdn2.microsoft.com)(VS.85).aspx

984:955
08/02/03 17:41:04
>>982
winuser.hにありました。

#define WM_NCMOUSELEAVE 0x02A2

誠にありがとうございます。

985:955
08/02/03 17:45:38
お礼の意味を込めて次スレを立てときました。
素人発言で気に障ったかたもいらっしゃったと思いますが、
ありがとうございました。

ふらっとC#,C♯,C#(初心者用) Part24
スレリンク(tech板)

986:955
08/02/03 17:52:10
WebBrowserだと、WndProcにWM_MOUSELEAVEのイベントがこないですね。。。
それ以外だと来ますが。

Console出力をして確認して気づきました。
一難さってまた一難。

987:デフォルトの名無しさん
08/02/03 17:58:33
ここはお前の日記帳じゃない

988:デフォルトの名無しさん
08/02/03 18:01:33
俺は応援してるよ

989:デフォルトの名無しさん
08/02/03 18:05:30
>>985
新スレ立てるなら関連スレもはれよ。
中途半端な仕事しやがって。

990:955
08/02/03 18:07:48
単にWebBrowserでマウスイベントを検出したいだけなんですけどね。
こんなに苦労をするとは予想外でした。

991:デフォルトの名無しさん
08/02/03 19:29:45
Document.Bodyのイベントを使うのはダメなのか?

992:デフォルトの名無しさん
08/02/03 19:31:50
中身がHTMLDocumentじゃなかったら使えないだろ。

993:デフォルトの名無しさん
08/02/03 21:26:41
Application.AddMessageFilterで横どる。色々応用きくからこの際
覚えとけ

994:デフォルトの名無しさん
08/02/04 00:10:10
TrackMouseEventで始めないと
メッセージすら生成されないと思うのだが


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch