1 名前:名無しぃ♯ [2008/06/21(土) 17:51:22 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part46 pc11.2ch.net/test/read.cgi/tech/1208791919/ その他テンプレ>>2-5 くらい
331 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 16:31:29 ] >>329-330 しょうがないからLabel配列型の変数にいれてやりました。 コンパイラが面倒みてくれたらいいのに・・・
332 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 16:40:28 ] そんなキモいことされてたまるか
333 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 16:56:37 ] どう考えてもコンパイラじゃなくて、せいぜいライブラリのありがた迷惑だろ。
334 名前:デフォルトの名無しさん [2008/07/24(木) 17:27:25 ] MenuItems.Addでメニュー項目を追加するときにイベントハンドラを指定しますが、 項目の数だけメソッドを用意するのが個人的に好きじゃありません。 各項目に共通のイベントハンドラを指定し、 その中でどの項目が選択されたのかを確認したいのですが、 このようなことは可能でしょうか。
335 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:28:10 ] sender
336 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:33:09 ] public void menuItem_Click(object sender, EventArgs e) { if (object.ReferenceEquals(sender, menuItem1)) { ... } else if (object.ReferenceEquals(sender, menuItem2)) { ... } }
337 名前:デフォルトの名無しさん [2008/07/24(木) 17:50:18 ] >>335 >>336 サンクス!
338 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 18:04:23 ] Tag使えよ
339 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 18:10:25 ] うむ
340 名前:デフォルトの名無しさん [2008/07/25(金) 01:38:05 ] プログラミングの初心者で恐縮ですが、質問です。 オセロゲームを練習として作ってみたいと考えています。 そこで、Panelを継承したクラスを作ってOseroPanelという名前にしました。 このOseroPanelを this.Controls.Add(p); とフォームに貼り付けました。 次にパネル側の描画処理を書きました。 一つはOnPaintをオーバーライドして描画しました。 protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawLine(new Pen(Color.Red), 10, 100, 200, 100); } こちらはうまく動いています。
341 名前:デフォルトの名無しさん [2008/07/25(金) 01:39:03 ] もう一つはイベントを使ってみたのですが、問題が発生しました。 VSを使って、イベントを自動作成し、 private void InitializeComponent() { this.SuspendLayout(); // // OseroPanel // this.Paint += new System.Windows.Forms.PaintEventHandler(this.OseroPanel_Paint); this.ResumeLayout(false); } private void OseroPanel_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawLine(new Pen(Color.Blue), 100, 10, 100, 200); } というコードを書きました。 どうやら OseroPanel_Paint()メソッドが呼ばれていないようです。 原因がわかる人がいましたら教えてもらえるとありがたいです。
342 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 01:51:20 ] this.Paint += new System.Windows.Forms.PaintEventHandler(this.OseroPanel_Paint); ↓ this.OseroPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.OseroPanel_Paint);
343 名前:デフォルトの名無しさん [2008/07/25(金) 09:40:22 ] >>342 OseroPanelクラスのなかでやっているので thisはOseroPanelを指しています。
344 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 11:09:12 ] ×Osero ○Othello
345 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 11:18:37 ] 取りあえずその記述だけでは原因不明なので まずデバッガでInitializeComponent通ってるかどうかから確認
346 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:13:04 ] オセロは(TM)だから注意ね
347 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:16:22 ] TMならセーフじゃん
348 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:43:35 ] 暑さでボケてたw (R) だよ
349 名前:デフォルトの名無しさん [2008/07/25(金) 15:43:20 ] >>345 orz まさにそれでした。 InitializeComponent()の呼び出しは自分で書かないといけないんですね。 Oseroクラスのコンストラクタに書いてみたところ、 すべてうまくいきました。 どうもありでしたm(_ _)m
350 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 16:30:44 ] フォームアプリのForm1とかのように使い捨てのクラスはともかく、 継承クラスではイベントハンドラではなくOn〜メソッドのオーバーライドが推奨のはず 探したけどソースが見つからんorz >>346-348 オセロ(玩具)とソフトウェアじゃあ区分が違うんじゃないか?
351 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:48:32 ] >>350 たしかにOnPaintをオーバーライドした方が、 コードがすっきりしますね。
352 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:57:31 ] >>340-351 ふらっと行け
353 名前:デフォルトの名無しさん [2008/07/25(金) 18:42:36 ] 一様乱数を生成する関数のソースについて質問があります。y=1/sqrt(2)*exp(-1/2*x*x)の計算で In function `GaussRandom':: undefined reference to 'sqrt’と In function `GaussRandom': : undefined reference to `exp' というエラーがでて実行できません。もちろん<math.h>は定義しました。 レポート課題なのでマジで困ってます。是非教えてください。ソースを下に載せておきます。 ちなみにxが一様乱数で、yが正規乱数です。 double GaussRandom() { double x; double y; x=UniformRandom(); y=1/sqrt(2)*exp(-1/2*x*x); return y; } double UniformRandom() { double x; int r=1; r=1229*r+351750; x=r/1664501; return x; }
354 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:44:02 ] >>353 スレタイをよめ
355 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:57:48 ] >>353 >In function `GaussRandom':: undefined reference to 'sqrt’と In function `GaussRandom': >: undefined reference to `exp' 翻訳するとだな 「型または名前空間名 'sqrt' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 型または名前空間名 'exp' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」 だな。何に翻訳したかは秘密だ。 さらに言うとusing System.Math;が足りないなw
356 名前:デフォルトの名無しさん [2008/07/25(金) 18:59:27 ] >>354 すいません。
357 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:09:17 ] >>353 マルチすんなゴミ
358 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:12:00 ] ReflectorでSystem.Randomクラスのコードをパクる奴とかいそうだな
359 名前:デフォルトの名無しさん [2008/07/25(金) 19:23:59 ] >>355 ありがとうございます。 >>357 期限が迫ってたので色んな場所で聞こうと思っただけです。気を悪くしてすいません。
360 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:32:50 ] ほんとにKYですね^^ 死んでください
361 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:35:51 ] 気を悪くしてすいませんだと? 気を悪くしたのはこっちだ!クソが!
362 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:43:39 ] 期限が迫ってたので色んな場所で聞こうと思っただけです
363 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:47:26 ] こういうゴミに教えてあげるような偽善者も死ねよ
364 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 21:43:47 ] 自己中乙
365 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:26:13 ] レポートの最後に「参考:2ch プログラム板」って書いておけよ
366 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:36:26 ] >>361 気を悪くさせての間違いです^^ >>365 課題落とされるかもしれないので書けません 教えてくれた人ありがとうございました^^
367 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:36:57 ] 今プログラミングスレがいっぱい上がってるがどゆこと?
368 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:45:14 ] >>367 なに言ってんだお前
369 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:46:18 ] しまった板違いwwwAA板じゃねえwwwww
370 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 23:00:15 ] >>369 斬新な板違いだなおい しかもよりによってスレタイに[プログラム板]って付いてるこのスレで
371 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 01:30:27 ] なんでこんな荒れてんの?
372 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 01:35:00 ] 荒れてないよ
373 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 12:06:15 ] 突然すみません。 C/C++のように構造体配列の定数データを持ちたいんですが、 C#ではどうすればよいのでしょう?
374 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 12:21:19 ] 無理
375 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 12:23:06 ] static readonlyな配列で良いんじゃね
376 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 12:30:22 ] static readonly な ReadOnlyCollection<T>
377 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:04:31 ] GDI+でICONへは変換不可ですか?
378 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:27:39 ] >>377 可能 Dim bmp As New Bitmap("hoge.bmp") Dim ico As Icon = Icon.FromHandle(Bitmap.GetHicon()) Dim fs As New FileStream("hoge.ico", FileMode.Create) ico.save(fs) fs.Close() ico.Dispose() bmp.Dispose()
379 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:40:09 ] ども、やってみます!
380 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 18:15:04 ] ただし制限きついけどなー
381 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 19:11:37 ] >>378 意味不明な質問には「日本語で書け」と叱責してやるのが本人のためだと思うけど。 ああちゃんと嫌味の意味でVBで答えてるわけかw
382 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 19:33:38 ] >>381 そういうことwww お前は、エスパーかw
383 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:03:26 ] Using使えよって思った。
384 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:04:52 ] キモすぎ
385 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:12:36 ] >>381 意味不明な質問には「日本語でおk」だろ?
386 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:15:29 ] 意味不明な質問にわざわざ絡む奴ってなんなの? いじめられっこ?
387 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:19:19 ] >>382 自作自演乙
388 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 04:59:50 ] >>381 二行目で気づいたならその時点で書き直せよ気持ち悪い
389 名前:デフォルトの名無しさん [2008/07/27(日) 15:52:58 ] GraphicsクラスのDrawImageメソッドで 画像の表示位置や高さ幅は通常intで指定すると思います。 ところが、実はfloatで指定する方法も用意されています。 public void DrawImage( Image image, float x, float y, float width, float height ) floatで指定すると何かよいことがあるのでしょうか? 基本的には四捨五入でintに繰り上げていると思うのですが、 そのような理解で正しいでしょうか?
390 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:07:44 ] >>389 WMFとかベクター画用じゃね?
391 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:10:09 ] Graphicsの描画単位はPixelだけじゃないぜ?
392 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:14:24 ] DirectXで使うためでしょ
393 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:15:14 ] ピクセル単位が整数だとしても 縮小拡大の原点が0,0で固定されないで 指定点から始まると困ることが多数あるのです。
394 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:47:49 ] いやそういうことじゃないでしょw >>391 が言ってることが全てだよ。 よく言われることだが、そもそもピクセルなんていうのは デバイス側の勝手な都合に過ぎん。
395 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:48:10 ] VB6時代にもTwipsとかあったな。 GraphicsUnit列挙体がGDI+で扱える単位すべてじゃね?
396 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:50:20 ] 画像表示するアプリ作ったときWin32APIのStretchBlt使ってたら スクロールの更新部分だけ描画させるたら非更新部分と結果がずれて困ったことあったな。 無効領域だけしか処理しないから全体を更新すればいいんだけど 大きい比率で拡大したときに表示してくれないから結局自前で処理するしかなかった。 GDI+が出たときに少数単位で渡したらずれなかった。
397 名前:デフォルトの名無しさん [2008/07/27(日) 19:01:47 ] 画像を反転させるには RotateFlip(RotateFlipType.Rotate180FlipXY); というメソッドを使えばいいことがわかりました。 画像Aと反転後の画像Bを作りたいのですが、 Cloneメソッドを使うと両方反転してしまいます。 Imageオブジェクトをコピーする良い方法はありますか?
398 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:09:50 ] RotateFlipしたあとにCloneしてるってオチじゃないだろうな
399 名前:デフォルトの名無しさん [2008/07/27(日) 22:51:02 ] ものすごくヘビーな処理をしています 計算途中でスリープやサスペンドに入られるとちょっと困るので、計算中は一時防止したいのですが 何か良い方法はないでしょうか?
400 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:56:56 ] 何か処理してれば普通サスペンドしないだろ
401 名前:デフォルトの名無しさん [2008/07/27(日) 23:01:32 ] いや、寝る前に仕掛けて朝起きたらサスペンドしていてちっとも処理が進んでなかったです。
402 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 23:18:35 ] >>399 処理と重力定数は関係ない・・・
403 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 23:21:21 ] 電源の設定でサスペンドしないように出来ない?
404 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 23:44:05 ] >>399 WM_POWERBROADCASTのPBT_APMQUERYSUSPENDの応答でサスペンド入りを拒否できるらしい。
405 名前:397 [2008/07/28(月) 02:27:50 ] >>398 違うようです。 シャローコピーのようで、 Imageクラスの中ではイメージ実態への参照(ポインタ) を持っているようです。 一方、回転するのはイメージ自体です。
406 名前:397 [2008/07/28(月) 02:48:15 ] 大ボケかましました。 RotateFlip(RotateFlipType.Rotate180FlipXY); だと画像が回転せず 正しくは RotateFlip(RotateFlipType.Rotate180FlipNone); でした。 頭悪すぎてすみません。 暑さでやられましたorz
407 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:10:24 ] rubyにおけるmechanize的なクラスとか無いんですか?
408 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:40:56 ] よほど自明でない限りrubyのmechanizeを説明するのが先だろ
409 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 12:05:25 ] C#にはスクレイピング用の定番ライブラリはないんじゃないかな。
410 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 12:15:43 ] 逆行列、最小二乗法のフリーのライブラリないでしょうか?
411 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 12:31:34 ] ライブラリっつーか、ソース探してきては
412 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:17:38 ] CLapackなんかの必要な関数だけC++/CLIでラップして使うのが楽
413 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:41:02 ] string に格納されたデータが整数に変換可能な形なら int に 浮動小数点形式なら float に変換する方法教えてください。
414 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:44:33 ] TryParse
415 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:44:49 ] TryParse
416 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:24:51 ] プロパティというのは、クラスのフィールドを外部に公開する時に、柔軟性や冗長性を持たせるために、 必要ならば何らかのラップ処理を行うためのものだと、今まで思っていました。 つまり、プロパティは必ずpublicなものしか存在しないのかと。 ところが、最近、外人さんのソースを読んでいると、すべてのフィールドに対してプロパティを用意して、 クラス内部のアクセスに対しても、privateのプロパティを経由して行っているプロジェクトが多いです。 個人的には、フィールドは小文字で、publicなプロパティは大文字の命名規則(Pascal)だったのですが、 外人さんの流れでは、privateなプロパティもPascal記法になっていて、 クラス内部のすべての操作が大文字から始まるメンバを操作しています。 皆さんはどうされてます?もしかして、外人さん流儀の方が主流なんでしょうか? C#以外の言語も含めて、そっちの方が主流になるんでしょうかねぇ。 個人的には、ローカルなnullチェックなどはプロパティの中ではなく、メソッドの中で操作する前に 行うほうが行儀が良いんじゃないかと思ったりもするのですが‥‥。
417 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:42:03 ] >>416 質問の意図がクリアーじゃない気がするよ。 も一度他人の目線で自分の文章読みなおしてみ?
418 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:53:45 ] >>417 単に話題提起してるだけなので、こんなもんじゃないでしょうか。解析的に解ける問題でも無いし。 興味を持たない人には、一生縁のない内容でもあると言えるし。 おそらく、LL言語的にはプロパティはあって当然の記述なので、おそらく外人さんが正しいのでしょうが。
419 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:36:43 ] サンプル見ると、MS 自身も private なプロパティ使ってるね。 クラス内部であっても、プロパティの実装変えたときのこと想定しとけよってことだと思う。
420 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:41:28 ] >>418 だから何を問題提起してるのか読み取れない、と言ってるんだよ。 質問内容にケチをつけているのではない。 ナニが言いたいのか分からないといってるの。
421 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:44:35 ] >>416 Delphi(Win32,.netじゃないやつ)のVCLをみると private/protectedのレベルではpropertyは使われてない。 (protectedまで使ってるものもあるがTCustom〜と直接使わないクラス。ここから継承してほかのコンポネを作る) でも内部ではプロパティを使ってアクセスしてる。(Get/SetとCreateをのぞく)
422 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:47:38 ] 外人さんの手法はクラスが大きくなると有効じゃね
423 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:52:49 ] >>420 読解能力がないか、話に興味が持てないならスルーすればいいんじゃね? 話からずれるが C#じゃ配列のプロパティはインデクサとして1つしか使えないと思ってたけど 配列型をプロパティの型にしてしまえば一応いくらでも使えるのだな。今初めて気がついた public Boolean[] Hoge { get;set;} でも、配列としてデータを持ってるんでなくてその場で計算して値を出したり入れたりしてたり、 内部では別の型のデータとして扱ってて、便利のためにほかの型でのアクセスさせるためにほかの配列使ったりってことはどうやったらいいの? int[,] でかると = int[100,100]; public int 極座標[int R,double Rad] { (ry とか しかもこういうのがほかの変数にも必要だったりする場合にはどうやって対処すればいいの?
424 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:57:52 ] メソッドを使いなさい
425 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:00:32 ] >>423 妄想力と読解力は違うよ。 ま、区別がつかない人間に縷々説明して分かることとは思わないけど。
426 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:06:20 ] >>423 VBからだと引数付きのプロパティは作れるのだけどこれをC#から使う場合がヒントになるかな。 Public Property NameProp(ByVal index As Integer) As String Get Return array(index) End Get Set (ByVal Value As String) array(index) = Value End Set // C#から使う o.set_NameProp(1, "nnnnn"); o.get_NameProp(1); 変なのが沸いてるけど無視していこう。
427 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:20:48 ] そこまでして[]を使いたい意味がわからん
428 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:21:12 ] だから言わんこっちゃない。 説明能力がない奴がろくに推敲もせずに書いた文章を エスパーしてやることが親切だと勘違いしている馬鹿が多くて困るが、 意味不明な文章(例えば>>423 )にははっきり「意味不明だ」と言ってやるのが 結局は一番親切な事だとなぜ分からないのだろう。
429 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:35:17 ] インデクサほとんど使わないんだよなぁ
430 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:54:54 ] だから423はスルーしたのか
431 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:56:45 ] >>423 配列を返すプロパティは実装変えられなくなるからダメ