- 1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part22 pc11.2ch.net/test/read.cgi/tech/1197802312/
- 504 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:51:44 ]
- PropertyGridで、uint型の配列を展開したとき、数値を16進数で表示するには
どうしたらいいのでしょうか。
- 505 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:57:25 ]
- 頑張るのならば ArrayConverter を真似して実装してから
uint[] 型のプロパティに TypeConverter 属性で実装したのをつける ArrayConverter の内部クラスが private なので面倒 頑張らないのならば [TypeConverter(tyeof(UInt32HexConverter))] struct UInt32Hex{ public uint Value; } とでもして Uint32HexConverter をお手軽に実装してから UInt32Hex の配列を使う
- 506 名前:504 mailto:sage [2008/01/25(金) 09:13:17 ]
- >>505
ありがとうございます。 とりあえず、頑張らない方向でやってみます…。
- 507 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:57:14 ]
- がんばろうぜ…
いやまあどうでもいいんだけど
- 508 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 10:17:29 ]
- XMLコメントを書くと
メソッド自体とパラメータのコメントはカーソルを合わせたり、Ctrl+K,Pとかすれば表示されますが 戻り値の/// <returns>xxxx</returns>に書いたものは どうすれば表示されるのでしょうか? あとデバッガでメソッドの戻り値が何になったのかを そのメソッド内で見ることは出来ないのでしょうか? バージョンは2008です
- 509 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:33:12 ]
- >>323
VC# 2008 Express使ってて思ったのは、 クイックウォッチが使えないこと。 ブレークポイントからステップインして処理を追っていくときに、 その時点における式の評価ができるのは結構便利なんだよな。 それ以外では全く不満はないので、それだけの為にVS2005Proに戻そうとまでは思わんね。 VS2008Pro、アップグレード版の値段によっては購入を検討する。
- 510 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:52:13 ]
- 前を使ってないからクイックウォッチってのがわからないけど、
文面からイミディエイトウインドウのような気がする。 ?を最初につけてメソッドとか記述すれば結果がみれるし、フィールドに代入も出来る 初期状態では確かメニューにないから、ユーザー設定から追加。
- 511 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:56:44 ]
- 式を評価するだけならウォッチ式でできるよ
2008では演算子の上にマウスカーソルを置くと評価した結果が表示されるようになってる
- 512 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:27:59 ]
- >>510
なるほど、イミディエイトウインドウで自作式を評価できるのか。 今まであんまり使ったこと無かったもんで知らなかった。 それならクイックウォッチいらないかもね。 >>511 それはソースに記述してある式の評価でしょ? それは当然できる。 俺が言ってたのは、ソースに記述してない評価式のこと。
- 513 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:46:42 ]
- >>512
ウォッチウインドウにある空の行をダブルクリックして式を入力するだけ
- 514 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:14:35 ]
- .netだから出来るんだろうけど、
最初にイミディエイトウインドウを知ったときには感動した ドキュメント見て、実際の動作確認をしたくなったら 参照さえしてあれば、そのままF10(ステップオーバー)だけ押せば ソースコードに全くないクラスでもそのまま試せるし、IntelliSense効くし ちょっとしたことなら確認用のプログラム書かなくてもいいんだよな テストしたいクラスがあったときもイミディエイトウインドウから実行できるし ブレイクポイント設定しておけばちゃんと止まるし
- 515 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:36:46 ]
- >>502
DirectoryInfoとFileInfoにして色々試してみました 大きなディレクトリを移動させる際の重さがなくなったのですが、移動スピード(?)というか処理にかかる時間が延びてしまったようです まだ色々試している段階なのですが、これは良くも悪くも安定したということか・・ 何はともあれ新しい可能性です、もう少し試行錯誤していこうと思います ありがとうございました
- 516 名前:デフォルトの名無しさん [2008/01/25(金) 16:32:16 ]
- DataGridView 内のセルにて
長い文字列を入力した時に折り返すようにしたいのですが どのように設定すれば良いのでしょうか? WrapMode を True に設定したら全角文字は上手く折り返されるんですが スペースを含まない半角文字はセルから溢れてしまい、困ってます。
- 517 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:56:07 ]
- 今データベースを使用するアプリケーションを書いているのですが、
SQL文が非常に長くて可読性が悪いので文を分割しようと考えてます。 この場合、 string query = "select hoge, fuga, hage from test" + " where hage = 1 ・・・"; 見たいな書き方しますか?それともStringBuilderを使ってApendしていきますか? どう書くのが一般的なんでしょうか?
- 518 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:28:05 ]
- 多いのは単に+で連結じゃないかね?
俺は@でヒアドキュメントもどきが好きだが。
- 519 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:29:32 ]
- ループ等の中にないならstringで連結してもいいんじゃね
それか余所においとくかリソースにつっこむか
- 520 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:36:50 ]
- リテラルの+はコンパイル時に解決されるからStringBuilderなんて使うと余計に遅くなるよ。
- 521 名前:デフォルトの名無しさん [2008/01/26(土) 00:44:27 ]
- C#のtry-catchの質問です
シリアル通信を用いたセンサのグラフを表示するプログラムを作っています。 UIのデザインForm1.csとセンサを扱うクラスSensorClass1.csにわけています。 で、シリアル通信の関連のエラー処理をしたいのですが、かきのどちらに try-catchを施せばよいでしょうか。 Form1.cs private void buttonWaaSens_Click(object sender, EventArgs e) { this.sensorClass.sens(); } SensorClass1.cs public void sens() { this.serialPort.DiscardInBuffer(); this.serialPort.WriteLine("sens +000001000 20 5 0"); System.Diagnostics.Debug.WriteLine("取得開始"); }
- 522 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:51:25 ]
- >>521
いや、日本語書けよw 君はエスパーかもしれんが、ここ読んでるキミ以外の人間はエスパーじゃないんだけど。
- 523 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:57:03 ]
- ぼくはエスパーです
どちらでも好きなほうにどうぞ
- 524 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 01:08:10 ]
- >>521
ベストアンサー すべて
- 525 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:33:53 ]
- PropertyGridのような折り畳み・展開可能なGrid(複数カラム保持)を作成したいのですが、
参考になるURL・方法を知っている方教えていただけますか? こんな感じを想定しています。 ColA |ColB |ColC -NodeA | | -NodeC| | +NodeB | |
- 526 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:42:09 ]
- >>525
ttp://www.codeproject.com/KB/grid/OutlookGrid.aspx
- 527 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:05:21 ]
- >>526
ありがとうございます。 コード参考にして作ります。
- 528 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 05:13:40 ]
- if(dir.Attributes == FileAttributes.ReadOnly)
{ dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; } dirはDirectoryInfoです これで読み取り属性なら読み取り属性を解除するということになっているでしょうか?
- 529 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:39:01 ]
- if ((dir.Attributes & FileAttributes.ReadOnly) != 0)
とでもしておかないと、読み取り専用以外の属性を併せ持つディレクトリを漏らす。
- 530 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:45:14 ]
- ディレクトリには必ずディレクトリ属性がついているから、>>528のやり方では絶対に条件が成り立たないな。
- 531 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:22:43 ]
- >>529
ありがとうございます 流石に単純すぎて自分のものはいぶかしんでいたんですが 読み取り専用なだけ、という場合しか考慮されていなかったんですね、助かりました >>530 DirectoryAttributes的なものでもあるんでしょうか? 一応こちらの環境では(読み取り専用にチェック入れただけのディレクトリに対しては)できましたが
- 532 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:25:26 ]
- あれ>>529がいけそうになさそうな・・
- 533 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:35:47 ]
- 状況によって消えたり消えなかったり、読み取り属性だけころっとかわったりorz
もうちょっと試行錯誤してきます、すみません
- 534 名前:508 mailto:sage [2008/01/26(土) 07:50:21 ]
- >>508
やっぱりどちらも無理なんでしょうか?
- 535 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:57:37 ]
- >>534
どっちも必要ないから無理じゃない?
- 536 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 09:32:29 ]
- >>534
メソッドの戻り値はreturnの部分にブレークポイント仕掛ければ分かるよ
- 537 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:43:12 ]
- >>518,519,520 さんありがとうございました。
>>518 @使ったヒアドキュメントもどき私も使っています。 >>520 コンパイル時に解決してくれんですね。安心して+で連結できます。
- 538 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:22:07 ]
- form1、form2、form3があり、
form1からボタンのイベントでダイアログ形式でform2を開き、そこに値(TextBox)を入力します そのあと、okでform1に戻り、今度は別のボタンのイベントでform3を開き、そこでSaveFileDialogを開きます このときSaveFileDialogのFileName先ほどのTextBoxの値を入れたいのですがどうしたらよいでしょう?
- 539 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:28:42 ]
- form2にそのテキストボックスの値を取得するプロパティを定義する
form2を表示して,okで戻った後にform1のコードからそのプロパティを通して値を取得して form1のフィールドに入れとく form3を開く前にプロパティとかコンストラクタとかでその値をform3に渡す
- 540 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:29:50 ]
- SaveFileDialogのヘルプ見れば一発でわかりそうなもんだが
一体なにがわからんの? もしかしてform1からform3にファイル名を渡す方法? そんなもん、form3を開く時にファイル名を渡すなりなんなり、自分で考えろ。
- 541 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:32:21 ]
- >>539
すみません 実際のコードで簡単に書いていただけないでしょうか?
- 542 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:40:58 ]
- >>540
お前初心者スレからでてったほうがいいと思うぞ
- 543 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:41:36 ]
- >>541
基礎からやり直せ そのレスで確信したが全くわかってないだろ
- 544 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:43:43 ]
- >>540
具体的に言えばそうです ただそのform3のsavefiledialogのFileNameプロパティに名前を設定するとき、 sfd.Filename = の後にどうやったらform2のテキストボックスの値を参照できるのかがしりたいです
- 545 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:07 ]
- class Form2 {
public string テキストボックスの値 { get { return this.textBox1.Text; } } } class Form3 { private string fileName; public string ファイル名 { get { return fileName; } set { this.fileName = value; } } void SaveFileDialogを開くイベント() { //(略) saveFileDialog.FileName = fileName; } } class Form1 { private string fileName; void Form2を開くイベント() { using (Form2 form2 = new Form2()) { if (form2.ShowDialog() == DialogResult.OK) this.fileName = form2.テキストボックスの値; } } void Form3を開くイベント(){ Form3 form3 = new Form3(); form3.ファイル名 = this.fileName; //form3を表示 }
- 546 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:30 ]
- >>544
クラスの基礎だけでいいからどっかの解説ページを読むんだ ここで一時凌ぎすべきじゃない項目だぞ
- 547 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:09:30 ]
- >>545
型 'System.Windows.Forms.TextBox' を型 'string' に暗黙的に変換できません AD_Adjust.textBox1' はアクセスできない保護レベルになっています。 ってエラーが出てしまいました
- 548 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:17:41 ]
- >>547
>>546 やる気あんのか屑
- 549 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:20:15 ]
- >>542
ロクにマニュアルも見ず、自分で試してみることもしないのは 初心者以前。 >>544 だから、 form2のテキストボックスの値を参照できるように、プロパティなり メソッドの引数なりで自分で参照できるように作るんだよ。
- 550 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:21:24 ]
- ↑ごめんなさい、解決です
- 551 名前:719 mailto:sage [2008/01/26(土) 14:29:25 ]
- >>719です。
もう一度起動してWINXPを起動したのですが今度は正常に読み込みました。 が・・・ 起動しても何か処理が重い・・・(普段なら10秒もすれば起動して処理が終わるのに・・・) それで色々作業中にまたまた急に電源が切れました。。 そう、719を書き込んだときとまったく同じ症状で で、「これはウィルスだな。」と思い、そうと決まれば駆除しかない! そう思って俺の計算では成功する予定でした。(←馬鹿 しかしその結果、ウィルスチェッカー中に電源が落ちてしまいます。 (ちなみにしばらく時間を置いてから起動すれば立ち上がるみたいなんです。) で3回程度試したんですが・・・必ずチェック数が1万を越える前に電源が落ちます。 ウィルスチェックしていない間は落ちることがないのでまず電源アダプタとかでは無いはずなんですが・・・ ニコニコにウィルスでも混入したのかな・・・?(←先にチェックして来い というわけでちょっとニコニコに何か手がかりみたいなの無いか見てきます。
- 552 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:09:08 ]
- (´・ω・`)知らんがな
- 553 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:48:10 ]
- >>719の頭ん中にもウィスル湧いてんじゃねw
- 554 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:20:38 ]
- Point[] p = new Point[4];
p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[3] = new Point(3, 3); クラスの配列をnewするとき↑みたいに 1個ずつnewするのがめんどいんですが スマートにやる方法教えてください
- 555 名前:デフォルトの名無しさん [2008/01/26(土) 19:25:58 ]
- Point[] p = new Point[4];
for(int i = 0; i < 4; i++){ p[i] = new Point(i, i); }
- 556 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:26:31 ]
- Point は構造体だから配列つくっちゃったら
要素ごとに new する必要なんてない なので new は最初の1個だけでよい
- 557 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:28:33 ]
- Point[] p = { new Point(0, 0), new Point(1, 1), new Point(2, 2), new Point(3, 3) };
- 558 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:31:07 ]
- C#でさぁWindowsのAPIを利用するのは.netのコンセプトに反してるよね?
- 559 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:32:24 ]
- それがいやなら .net 側で API 用意してくれ!
- 560 名前:554 mailto:sage [2008/01/26(土) 19:33:30 ]
- >>555 (;´Д`)却下
>>556 (゚д゚)ハァ? >>557 (´∀` )採用!!
- 561 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:34:50 ]
- 構造体の概念を全く理解してないでよくPointクラスを使用できるね。
掛け算の概念を知らないで九九をひたすら暗記している家の息子みたいなもんだ。
- 562 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:36:01 ]
- for を却下して new を羅列してる方を採用って・・・
何がやりたいのか分からない。
- 563 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:37:38 ]
- >>560
Point[] p = Enumerable.Range(0, 4).Select(i => new Point(i, i)).ToArray();
- 564 名前:デフォルトの名無しさん [2008/01/26(土) 19:38:05 ]
- >>561
- 565 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:33:37 ]
- 今までC/C++やってたんですが
最近C#やることになって勉強中です。 ものすごく親切な仕様という印象です。
- 566 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:51:14 ]
- 文字列のn番目の文字だけを別の文字に変えたいときはどうしたら良いでしょうか?
- 567 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:56:55 ]
- 文字列.replace(a,b);
a→b
- 568 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:58:55 ]
- >>554
Point[] p = new Dictionary<int, int> { { 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 } }.Select(xy=>new Point(xy.Key, xy.Value)).ToArray();
- 569 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:15:55 ]
- 一旦ToCharArray()で文字配列にしていじった後にnewし直す。とか
- 570 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:32:19 ]
- >>566
StringBuilderならインデクサ経由で変更できるよ。
- 571 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:33:07 ]
- >>565
親切っていうよりガチガチに制限かけまくってるだけ
- 572 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:51:04 ]
- 画像処理のラスター処理関連の質問です。
画面上に何か図形を2つ書いて(例えば10角形2つ)を書いて その図形の重なった部分の面積を求めるっていうとき どうやればできますか?
- 573 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:54:17 ]
- 三角形9つにずつ分解して、重なり部分81箇所の面積の和をとる。
幾何学の問題。
- 574 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:54:58 ]
- 9じゃねえわ。8x8=64
- 575 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:57:56 ]
- 重なり部分をどう求めるの?
- 576 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:06:03 ]
- >>572
紙と鉛筆で「ry)っていうときの」アルゴリズム書ける人か書けない人かで分岐。 書ける人ならとりあえずアルゴリズム書いて晒してみると親切な人がC#での書き方のヒントくれるかも。 書けない人は……ライブラリ探すところから始める? ちなみに.NET標準にはないよ。 まあ標準ではなくてもGeometryクラスを流用すればできるかもしれんが。 ttp://d.hatena.ne.jp/hogeman/20071202
- 577 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:12:22 ]
- >>572みたいな問題って意外と難しいんじゃないの?
いつでも代数的に解ける図形が与えられるとは限らないし。 だからモンテカルロ法みたいなのがあるわけじゃないの? つーか、>>572は図形がどういうデータ構造で与えられるかをまず提示しなきゃ 話にならないね。
- 578 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:18:36 ]
- >>576も言ってるけどWPF使えば超簡単にできるよ
- 579 名前:578 mailto:sage [2008/01/26(土) 22:19:29 ]
- >>576が言ってるのは違うGeometryだったな
- 580 名前:572 mailto:sage [2008/01/26(土) 22:24:03 ]
- 図形の形状は不定です。
C言語上でやったときは メモリデバイスコンテキスト上に図形を描画して それぞれ配列に格納して論理演算で求めてました ↓みたいなかんじ ■■■■■■ ■□□□□■ ■□□□□■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■□□■ ■■■□□■ ■■■□□■ ■■■□□■ ■■■■■■ 重なり部分 ■■■■■■ ■■■□□■ ■■■□□■ ■■■■■■ ■■■■■■ ■■■■■■ C#だとメモリデバイスコンテキストに相当するものが あるのかよくわからないので聞いてみました WPFというのでできるんですか 調べてみます
- 581 名前:576 mailto:sage [2008/01/26(土) 22:25:14 ]
- >>578
WPFのGeometry.GetAreaでいけそだね。 だとしたら「標準にはない」は嘘になる。サンクス
- 582 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:43:15 ]
- >>580
メモリデバイスコンテキストに相当するものならSystem.Drawing以下にあるかな。 GraphicsPathからRegion作って残りとIntersectして共通領域のRegionを作る。 できたRegionをGraphics.Clipにセットして適当に塗りつぶして塗りつぶし色でピクセル数え上げか。 それでいいならできなくはないと思う。 WPFはSystem.Drawing以下のとは別の描画ライブラリ。
- 583 名前:572 mailto:sage [2008/01/26(土) 22:50:39 ]
- >>582
dobon.net/vb/dotnet/graphics/fillregion.html ↑のHPのやり方ですか? キーワードでググってみたら出てきました。 とりあえずこのやり方でやってみます。 ありがとうございました。
- 584 名前:566 mailto:sage [2008/01/26(土) 23:35:17 ]
- >>570
ありがとう
- 585 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 23:37:28 ]
- フォントの名前からフォントファイルの名前を取得する方法ってありますか?
"MS ゴシック"->"MSGOTHIC.TTC" みたいな感じで。
- 586 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 23:51:31 ]
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
- 587 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:41:37 ]
- 以下のような任意の2つのRectがあって、
□□□□□□□□□ □□□□□□□□□ Rect1 □□□□□□□□□ □□□□ □□□□ Rect2 □□□□ これを次のようにマージするには、空白部分をどうやって補完すればいいんでしょ。 □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ Region1(=Rect1+Rect2+補完部分) □□□ □□□□ □□□□ □□□□
- 588 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:45:08 ]
- まず間違いなく必要なのは
「次のように」 の部分を厳密に定義することじゃないだろうか。
- 589 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:46:26 ]
- 書き込んでから閃いた。
Rect1のBottomをRect2のTopの位置まで下げ、新しいRect1とする。 Rect2のTopをRect1のBottomまで上げ、新しいRect2とする。 次に、新しいRect1とRect2の重なりを>>583のHPのやり方で求めると、 これが補完部分になる。 より簡単で、いろんな場合に使える方法がありましたら教えてください。
- 590 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:56:32 ]
- 矩形同士の重なりなんてRectangle.Intersectでいいだろ
- 591 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:09:06 ]
- menustripをウインドウの上に固定するにはどうしたらいい?
今は大きい画像を読み込んで↓の方にスクロールさせると menustripが消えてしまう
- 592 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:11:36 ]
- >>591
画像を表示するパネルに一緒にMenuStripを乗っける馬鹿がいるか。
- 593 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 04:40:33 ]
- 画像処理する時処理を少しでも軽くするため
ポインタ使おうかと思うんですが C#の流儀に反する?
- 594 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:04:16 ]
- 反しない。普通にunsafeで使え。
- 595 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:06:05 ]
- >>593
不安ならPaint .NETのソースをunsafeでgrepしてみたら?
- 596 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:13:08 ]
- C#のエントリポイント、なにを書くところかさっぱりわからない
- 597 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:30:56 ]
- プログラムを開始してやりたいことを書けばいい。
イベントドリブンなプログラムなら、ハンドラを登録しまくれ。
- 598 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:36:39 ]
- とりあえず自動生成されたのを眺めていたけどクラス(デフォだとForm1)を呼び出して起動、みたいになってる様子
その呼び出されたクラス内のコンストラクタでハンドラだとかコモンコントロール?だとかを登録してる
- 599 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:42:15 ]
- enum型のToString()って独自定義出来ないものだろうか。
ComboBox.Itemsにするのに出し入れで変換するのが面倒くさいから日本語で要素を定義してみた。 IntelliSenseは特に問題ないけど違和感ありまくり
- 600 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:57:49 ]
- >>599
enumみたいな構造体を自分で定義すればいいのでは?
- 601 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:28:42 ]
- struct EnumWrapper<T> where T : struct {
private T value; public T Value { get { return value; } } public EnumWrapper(T value) { this.value = value; } public static explicit operator T(EnumWrapper<T> value) { return value.Value; } public static explicit operator EnumWrapper<T>(T value) { return new EnumWrapper<T>(value); } public override string ToString(){ ToStringAttribute[] attr = (ToStringAttribute[])typeof(T) .GetField(Value.ToString()).GetCustomAttributes(typeof(ToStringAttribute), false); return (attr.Length != 0) ? return attr[0].String : Value.ToString();}} [AttributeUsage(AttributeTargets.Field)]class ToStringAttribute : Attribute { public string String { get; private set; } public ToStringAttribute(string str) { this.String = str; }} enum MyEnum { [ToString("いちばん")]One, [ToString("二番")]Two, } こんな風にするとか
- 602 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 14:07:34 ]
- enum の要素に属性ってつけられたっけ
- 603 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 14:14:32 ]
- フィールド扱いだからAttributeTargets.Fieldで可
- 604 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 14:44:51 ]
- >>601
ぼやきのつもりで書いたのに、あっさりこんなコードが出てきて驚きました。 中程のreturnの行の真ん中のreturnだけ削除したと思います。 使い方にちょっと悩んだけど 初期設定で ComboBox.Items.Add((EnumWrapper<MyEnum>)MyEnum.One); 使うときには (MyEnum)(EnumWrapper<MyEnum>)ComboBox.SelectedItem ですね。 ありがとうございました。 なんかC#ってなんでもできそうな気がしてきた。
|

|