C♯, C#相談室 Part35
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/03(金) 03:07:45前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0076デフォルトの名無しさん
2006/11/06(月) 22:35:08Perl=C#
って必至ですね
0077デフォルトの名無しさん
2006/11/06(月) 22:49:24だってStreamReader.Read()にbyte[]が引数のオーバーロードなんて無いもんw
0078デフォルトの名無しさん
2006/11/07(火) 00:21:160079デフォルトの名無しさん
2006/11/07(火) 00:36:460080デフォルトの名無しさん
2006/11/07(火) 05:47:22不向きっつーか現状開拓中。つまり歴史がない
アーリーアダプタががんばってる最中。
しかしXNA Frameworkはびっくりするほど.NETわかってる
やつが書いているようなので(一部のBCLよりよくわかってるw)
すごくわかりやすいのになりそう。そうなったら流行るかも。
遅レスです。
0081デフォルトの名無しさん
2006/11/07(火) 09:42:24チェックボックスの値が上手く取得できないので困ってます
チェックボックスがtrueのとき削除しようと思ってるんですが
何かいい方法はありますか?
0082デフォルトの名無しさん
2006/11/07(火) 12:09:05日本語でおk
0083デフォルトの名無しさん
2006/11/07(火) 13:11:15ttp://support.microsoft.com/kb/316934/ja
を参考に、C#.NETとADO.NETを使用してExcelへの出力をしたいと
考えています。
Book1.xlsのsheet1のA1にC#のソースから"ABC"という文字列を
SQL Updateコマンドで実行したいのですが、なかなか上手くいきません。
どなたか参考になるサイトや例を教えて下さい。
0084デフォルトの名無しさん
2006/11/07(火) 14:55:03クリックしてチェックボックスがオンになって周りが破線で囲まれたときに
チェックボックスの値がtrueって取得できない
他の所をクリックして破線がとれたらtureって取得できる
なんとか前の段階でtrueかどうか確認したいのよ
0085デフォルトの名無しさん
2006/11/07(火) 17:02:06>Book1.xlsのsheet1のA1にC#のソースから"ABC"という文字列を
>SQL Updateコマンドで実行したい
言ってることが分かりません。
0086デフォルトの名無しさん
2006/11/07(火) 17:52:41.NET2.0+Excel2003でこれだけで出来たが。
using (OleDbConnection con = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Book1.xls;Extended Properties=""Excel 8.0;HDR=NO;"""))
{
OleDbCommand cmd = new OleDbCommand(@"UPDATE [Sheet1$A1:A1] SET F1='ABC'", con);
con.Open();
cmd.ExecuteNonQuery();
}
0087デフォルトの名無しさん
2006/11/07(火) 18:41:57ありがとうございました。
まじ分からなくて、もうだめかと思ってました。
初歩的な疑問だったかと思います、ですいません。
本当にありがとうございました。
0088デフォルトの名無しさん
2006/11/07(火) 19:02:46DataGridView.CurrentCellDirtyStateChanged ??
0089デフォルトの名無しさん
2006/11/07(火) 19:28:55g.DrawRectangle(ほにゃらら・・・
g.FillRectangle(ほにゃらら・・・
ってあったときにたとえば
g.Transparency=155;
g.DrawRectangle(ほにゃらら・・・
g.FillRectangle(ほにゃらら・・・
ってすると描画全体が薄くなるようなことがしたいんですが・・・
0090デフォルトの名無しさん
2006/11/07(火) 19:43:220091デフォルトの名無しさん
2006/11/07(火) 19:45:31それともグラフィックスのアルファ値見たいのがある?
0092デフォルトの名無しさん
2006/11/07(火) 19:49:480093デフォルトの名無しさん
2006/11/07(火) 19:56:03ttp://pc8.2ch.net/test/read.cgi/tech/1162193452/
0094デフォルトの名無しさん
2006/11/07(火) 21:26:48まさにCurrentCellDirtyStateChangedでした
解決しました
ありがとうございます
0095デフォルトの名無しさん
2006/11/07(火) 21:41:48おまえ>>89の言ってる意味わかってるの?
0096デフォルトの名無しさん
2006/11/07(火) 21:59:59DrawImageとなるとまた別だけど
どうしても全体を透明にしたいなら、まとめて別のImageに描画しといて
ColorMatrix付きでDrawImageとか
0097デフォルトの名無しさん
2006/11/07(火) 23:25:55できるかできないかじゃなくて、本来の意図としては描画コードをいじることなく外部の属性変化で動作を変化させたいって事でしょ?
本気で言ってるとしたらなんかエンジニアとしての素養が欠けてると思う。
0098デフォルトの名無しさん
2006/11/07(火) 23:36:250099デフォルトの名無しさん
2006/11/07(火) 23:48:44お勧めの方法を教えてください。
ぼろぼろクリキター
010099
2006/11/07(火) 23:55:550101デフォルトの名無しさん
2006/11/08(水) 00:07:550102デフォルトの名無しさん
2006/11/08(水) 00:21:39オレオレ言語を.NETアセンブリにできるみたいね、面白そう
誰かいじってるやついる?
ぼろぼろクリキター
0103デフォルトの名無しさん
2006/11/08(水) 00:46:28なんでそんな剣幕なのか分からないけど
>>92でいいんじゃね?
>>92でパラメータでもなんでもアルファ渡して
そいつからColorつくってブラシでもペンでも描画コードで作ればいいんじゃ?
0104デフォルトの名無しさん
2006/11/08(水) 05:04:41http://www.atmarkit.co.jp/fdotnet/insiderseye/20060215cscommunity/cscommunity_02.html
>Q. C#でWin32ネイティブ・アプリケーションも作成できるようにしてほしい。
>A. もちろんC#のコードからWin32ネイティブのコードを生成することは実現可能である。
C#でのネイティブコードの出力も検討されてるみたいね。
ぜひとも実現してほしいもんだ。
0105デフォルトの名無しさん
2006/11/08(水) 08:33:030106デフォルトの名無しさん
2006/11/08(水) 09:24:54描画する矩形等が重なる場合、まずいんでない?
例えばアルファ値128で黒い矩形の上に白い矩形を重ねたらグレーの矩形になるが、
アルファ値なしで黒い矩形の上に白い矩形を重ねて、最後にイメージ全体をアルファ128で描画すると半透明な白が描画される。
ってことで >96にあるとおりColorMatrix付きDrawImageでいいと思う
0107デフォルトの名無しさん
2006/11/08(水) 13:25:24ネイティブコード出力よかまずそのへんを改善して欲しいのだが…
0108デフォルトの名無しさん
2006/11/08(水) 14:56:170109デフォルトの名無しさん
2006/11/08(水) 16:27:41画像の一部分だけBitmapメンバに格納したいってときに
Graphics.DrawImageで部分を切り出ししても全体がコピーされるんでクマー状態。
メソッドの使い方をまちがっているのか、それとも別の方法がいいのか。
どなたか参考になるアイディアをください
0110デフォルトの名無しさん
2006/11/08(水) 16:31:26あ・・・これじゃわかりにくいですね。
いま事情で手元にソースがないので完璧には説明できません。スマソ。
0111デフォルトの名無しさん
2006/11/08(水) 17:08:250112デフォルトの名無しさん
2006/11/08(水) 17:28:23> プロパティとかイテレータとか匿名メソッドとかすごい多用しちゃってますが・・・・
iteratorもdelegateも無茶苦茶遅い。
しょーもないアプリなら実用になることはなるのだけど、速度が要求されるところだと
その遅さが致命的。
もっと最適化がんばって欲しい気はするが、いまのC#の言語デザインだとiteratorやdelegateを
inliningするのは難しいだろうなぁ。
ほんと、デザインセンスを疑うよ。素人じゃないんだから・・。
0113デフォルトの名無しさん
2006/11/08(水) 17:35:370114118
2006/11/08(水) 17:50:20もちろんC++でやればもっと早くなるとは思うけど。
生産性との兼ね合いですが今の開発ではC#で十分。
0115デフォルトの名無しさん
2006/11/08(水) 17:54:17インライン展開とかありえん
0116デフォルトの名無しさん
2006/11/08(水) 17:59:46ToolStripMenuItemで実現は可能でしょうか?
それとも全部自前で作るしかないんですかね?
0117デフォルトの名無しさん
2006/11/08(水) 18:03:56それやってもだめなので。。。
0118デフォルトの名無しさん
2006/11/08(水) 18:07:42確かにMFC使わないならそう思うが
VC+++MFCならC#とほとんど変わらないだろ?
0119デフォルトの名無しさん
2006/11/08(水) 18:32:450120デフォルトの名無しさん
2006/11/08(水) 18:47:07なんか悩んだ記憶があったので前に書いたコード漁ったらこうやってた。
srcBitmapの部分(x, y, width, height)をresultに切り出すとすると、
Bitmap result = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(result)) {
g.DrawImage(srcBitmap, -x, -y, width, height);
}
0121デフォルトの名無しさん
2006/11/08(水) 18:53:44商用ではないですよね?
商用なら大問題だぞ
0122デフォルトの名無しさん
2006/11/08(水) 18:54:40.NETが商用には耐えかねる
0123デフォルトの名無しさん
2006/11/08(水) 18:55:37C#そんなに使いまくってるわけじゃないので・・・
0124デフォルトの名無しさん
2006/11/08(水) 19:03:48クリッピングが適当だけど、そんなことでパフォーマンスに影響が出るほどアホじゃないだろ
0125デフォルトの名無しさん
2006/11/08(水) 19:09:15MFCはちょっと…癌だね。
MFCで読み込む画像をダイアログで指定してフォームに表示するだけでも
覚えることは山ほどある。
TextBoxの入力内容をタイトルにするにも直感的じゃない手法を取らなくてはならない。
後、文字の取り扱いが良くない。
0126デフォルトの名無しさん
2006/11/08(水) 19:14:38じゃあさ、読み込む画像をダイアログで指定する際にプレビュー機能が欲しいなんて
要求があったらどうする。
これを実装しようとするとC#でも面倒(容易だが)
また、無駄に動作がもっさりしてるし・・・
VC+++MFCの方がコンパクトで高速なものが書ける。
0127デフォルトの名無しさん
2006/11/08(水) 19:19:330128デフォルトの名無しさん
2006/11/08(水) 19:26:220129デフォルトの名無しさん
2006/11/08(水) 19:28:04皆がオリジナルダイアログを作りたいわけではない。
多分、生産性の意味わかってないな。
実際の業務でもコンポネント作るのは技術レベル高い人にさせてるし。
他の大多数はそれを使うだけ。
俺としては直感的に使いやすい方がベター。
0130デフォルトの名無しさん
2006/11/08(水) 19:33:15人に見せて恥ずかしくないUIを作ろうとするとほとんどのコントロールは
自前で用意することになるぞ。
VC++も同じだが、サンプルアプリでないかぎり標準コントロールを
しようする機会ははない
0131デフォルトの名無しさん
2006/11/08(水) 19:33:24そしたら全部アセンブラでクロック数かぞえながら書いとけw
そうせずにC++/MFCを使う理由と、C++/MFCを使わずにC#を使う理由は大体同じだと思うよ。
0132デフォルトの名無しさん
2006/11/08(水) 19:40:41おさまったの?
安置c#論争やらないのw
とりあえず巣に帰れ。
0133デフォルトの名無しさん
2006/11/08(水) 20:02:07ついでに押して欲しいんだけど
L"これは日本語テキストです"
の Lってなに?
0134デフォルトの名無しさん
2006/11/08(水) 20:09:03スレ違いじゃない?
0135デフォルトの名無しさん
2006/11/08(水) 20:14:040136デフォルトの名無しさん
2006/11/08(水) 20:15:55プログラミングできない人がこの板で何やってんだか・・・
0137デフォルトの名無しさん
2006/11/08(水) 20:22:58すれ違いスマソ
0138デフォルトの名無しさん
2006/11/08(水) 20:29:22右クリック検出だけなら簡単だけど、メニュー出そうとすると結構面倒
昔の記憶だと、ToolStripMenuItemじゃなくて親のDropDownの方を
継承したほうが楽だったような
OnMouseDownでMouseButton覚えといてOnItemClickedでボタンで分岐、
右だったらContextMenu(ContextMenuStripじゃなくて)を表示するのが簡単だったりする。
ContextMenuStripだとフォーカス奪うので閉じなくする処理とかが面倒。
0139デフォルトの名無しさん
2006/11/08(水) 21:49:38sortedList.Add("PC", "パソコン");
sortedList.Add("MOBILE", "携帯電話");
sortedList.Add("CALC", "電卓");
上記のようなコードで「SortedList」を用いてインデックス、キー、値の各々で検索出来る
配列を作成しています。このクラスではAddするとキーに従って自動的に並び替えが発
生するのですが、並び替えをさせない方法がわかりません。
IComparer or SortedListのコンストラクタで何かを設定(指定)すると出来そうな
感じがするのですが・・・Addの順序で配列を作成するにはどのようにすれば良いか
ご存じの方、ご教授願います。
0140デフォルトの名無しさん
2006/11/08(水) 22:00:340141デフォルトの名無しさん
2006/11/08(水) 22:04:52えーとSortedList ってのは、中身が何らかの順序関係によって整列されたリストのこと。
(Sort ってのは英語で並べ替えというような意味)
ソートしなくていいなら、List<string> や ArrayList を使うべき。
0142デフォルトの名無しさん
2006/11/08(水) 22:06:42・インデックスで検索するためのList<Pair<string,string>>
・キーで検索するためのDictionary<string, string>
・値で検索するためのDictionary<string ,string>
を各々用意したらいかがか。
0143デフォルトの名無しさん
2006/11/08(水) 22:10:45同等の機能でいいなら、そこまで複雑なことしなくてもいいんじゃないかなあ。
0144デフォルトの名無しさん
2006/11/08(水) 22:25:49複雑なことしなくてよいのは私もなんですけど…客先の要件なので…
要は状態遷移を行いたいのです。
1.Prev、Nextであればカレントインデックス値を加減算して処理する。
2.指定した状態へJumpであればキーで検索して処理する。
3.前の状態へJumpであれば値で検索して処理する。
と言う具合です。これを満たすためにはArrayList、HashTableの両方を
兼ね備えたSortedListが最適と判断したのです。
自動的に並び替えが無ければOKなんでけどねぇ〜orz
0145デフォルトの名無しさん
2006/11/08(水) 22:28:22List<Pair<string,string>> でOK。
0146デフォルトの名無しさん
2006/11/08(水) 22:37:18それだとキーでの検索と値での検索に線形オーダーかかるのでは。
どれも定数オーダーでやるには>>142の三つが必須じゃない?
0147デフォルトの名無しさん
2006/11/08(水) 22:41:420148デフォルトの名無しさん
2006/11/08(水) 22:42:170149デフォルトの名無しさん
2006/11/08(水) 22:46:56ほとんどのコントロールを自前で用意って、ほんとにそう?
ほとんどのアプリでは標準コントロールを使用している。
.Netでできていて、標準コントロールを使用する機会がないような
人に見せて恥ずかしくないUIを持ったアプリを教えてくれるとありがたいんですが。
0150デフォルトの名無しさん
2006/11/08(水) 22:49:34Dictinary だと線形オーダーのままだよ
0151デフォルトの名無しさん
2006/11/08(水) 22:52:23テキストエディタを作る場合を考えてください。
TextBoxコントロールを使って作れますか?
0152デフォルトの名無しさん
2006/11/08(水) 22:52:30推測だがデリゲートが遅いせいじゃない?
0153デフォルトの名無しさん
2006/11/08(水) 22:52:59いやいや、Dictionaryはハッシュテーブルだよ
だから定数オーダー。
0154デフォルトの名無しさん
2006/11/08(水) 23:01:58v1ならしゃあないけど。
0155デフォルトの名無しさん
2006/11/08(水) 23:05:02Writing Faster Managed Code: Know What Things Cost
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/fastmanagedcode.asp
たとえHashtableがそうでも、その3つの中にリスト含んでるから LogN(配列のオーダ)でしょ
OrderedDictionaryなんてあったのか、ふざけー
なんでGenerics空間に作らなかったんだ・・
0156デフォルトの名無しさん
2006/11/08(水) 23:05:04違うから。
0157デフォルトの名無しさん
2006/11/08(水) 23:06:00エディタなら検索ダイアログや置換ダイアログ、各種の設定用ダイアログ等での
文字列入力で盛大に使うんじゃない?
ポトペタで作れて生産性向上というのと、「ポトペタだけで」作れるというのは違う
ことだってのはわかるよね。
簡単に作れる部分を簡単に作れば、そこで浮いた工数を他の処理、
例えばテキストエディタならばエディット部分の作成に回すことができる。
あるいは工数の減った分を単純に利益としてもよいし、販売価格を下げてもよいし、
バージョンアップサイクルを短縮してもよい。
.Net にしたからといって何でも簡単にできるわけではなくって、
簡単にできることが多少増える→生産性が上がる、ということが重要。
漏れはUI以外は C++ or C++/CLI 使ってるけど。
C# ってtemplate無いし多重継承無いし using たくさん書かせられるから効率悪いんだもん。
0158デフォルトの名無しさん
2006/11/08(水) 23:08:180159デフォルトの名無しさん
2006/11/08(水) 23:11:55OrderedDictionaryを用いる方向で実装していました。
ところが、値の存在チェックは出来るのですが、インデックス値を取得することが
出来なかった(取得する方法がわからない)からです。
1.インデックス値の操作でキー、値を取得する。
2.キーで検索して、インデックス値を取得する。
3.値で検索して、インデックス値を取得する。
この3つの要件を満たすのがSortedListだったのです。
0160デフォルトの名無しさん
2006/11/08(水) 23:16:57ありがとうございます。早速試したところ…自宅のPCはXP-HOMEだった。orz
明日、出社して早速試してみます。
0161デフォルトの名無しさん
2006/11/08(水) 23:22:270162デフォルトの名無しさん
2006/11/08(水) 23:40:46ああそうか…
OrderdDictionaryにあってもよさそうなのにな。
0163デフォルトの名無しさん
2006/11/08(水) 23:47:36class Record { string key, value; int index; }
でも作って
・List<Record>
・Dictionary<string key, Record>
・Dictionary<string value, Record>
の3つを作れば?
・List<Pair<string key, string value>>
・Dictionary<string key, int index>
・Dictionary<string value, int index>
でもいいけど。
0165デフォルトの名無しさん
2006/11/09(木) 00:39:14> デリゲートはそんなに遅くないのでは?
全然言ってることが的外れ。
例えばdelegateでカリー化したり関数合成したりしてもinliningされないことが問題。
アンダースに次会ったときに突っ込んでみるよ。
0166デフォルトの名無しさん
2006/11/09(木) 00:48:460167デフォルトの名無しさん
2006/11/09(木) 01:16:04Scheme最高w
0168デフォルトの名無しさん
2006/11/09(木) 01:40:20アンダース、年に数回、日本に来るよ。おまいさんも聞きたいことがあればサミットなり何なり参加しれ。
でもtypedefとネイティブコード生成の質問はタブーな。
毎回聞く馬鹿があとを絶えないのでアンダースはうんざりぎみ。
0169デフォルトの名無しさん
2006/11/09(木) 08:39:52次世代windowsはマネージコードが標準で、
ネイティブコード実行が保護下のエミュレーションに。
0170デフォルトの名無しさん
2006/11/09(木) 08:48:100171デフォルトの名無しさん
2006/11/09(木) 09:27:53昔はゲームはDOSじゃないと遅くて動かなかった。
windowsでゲームというと馬鹿にされたもんだよ。
もしかしてマネージアプリのほうが高速になる時代が来るかもな
0172デフォルトの名無しさん
2006/11/09(木) 10:35:15List<Pair<>> list = null;
上記のように定義してどのように追加すればよいのでしょうか?
Addメソッドを用いるのは理解出来てます。書き方がわかりません。
ご存知の方、教えてください。
0173デフォルトの名無しさん
2006/11/09(木) 14:17:48list.Add(new KeyValuePair<string, string>("key", "value"));
こういうこと?
0174デフォルトの名無しさん
2006/11/09(木) 15:10:00を参考にして書き直してみたやつ。現状うまくいってない。
Image srcimgが吸出し元
int w= srcimg.Width/10;
int h = srcimg.Height/10;
Bitmap[,] result =new Bitmap[10,10];
for(int j=0;j<10;j++){
for(int i=0;i<10;i++){
result[i,j]= new Bitmap(w,h);
Graphics g = Graphics.FromImage(result[i,j]);
g.DrawImage(srcimg, -i*w, -j*h, w, h);
g.Dispose();
}
}
foreachのほうがいいのかな。。。
0175デフォルトの名無しさん
2006/11/09(木) 15:44:32じゃあ、こうすれ。
g.DrawImage(srcimg,
new Rectangle(0, 0, w, h),
new Rectangle(i*w, j*h, w, h),
GraphicsUnit.Pixel);
■ このスレッドは過去ログ倉庫に格納されています