C#, C♯, C#相談室 Pa ..
[2ch|▼Menu]
660:デフォルトの名無しさん
09/03/08 19:33:22
VS2008のC#でプログラムを組んでいます。

たくさんの線や長方形、円をアルファ値30%ぐらいで重ね合わせて描画しています。
これを印刷しようとして躓いてしまいました。
プリンタへは、きれいに印刷できました。でも、プリンタドライバ型のPDF出力を行うと、
不完全なディザみたいになってしまいます。どうも、PDF自体が半透明な描画ができないようです。

それで、いったんBitmapに描画してから、プリンタに転送しようとしました。
サイズが小さいときにはこれでPDF出力もうまくいったのですが、A3サイズになると、プリンタの
解像度と用紙サイズでBitmapを作成しようとした時点でエラーになってしまいました。
縦横のピクセルサイズが大きすぎるのだと思います。

こんなときはどうすればいいのでしょうか。やっぱりバンディングみたいにすこしずつ処理でしょうか。



661:デフォルトの名無しさん
09/03/08 20:08:52
>>660
大きすぎるならそのBitmapを縮小すれば良いんじゃね?

662:デフォルトの名無しさん
09/03/08 20:36:47
A3が11.7" x 16.5"で、300dpiだと3500px x 5000pxあたりか。

そのくらいでエラーになるのはおかしい。

663:デフォルトの名無しさん
09/03/08 21:23:44
本当に仮想プリンタのせいだとしたら、
まず仮想プリンタを変えて試すべきじゃないんだろうか?

フリーのだけでも数種類あったはずだよね?

664:デフォルトの名無しさん
09/03/08 22:24:47
ありがとうございます。
>>662
仮想プリンタ側で4800dpiみたいな設定ができて、C#プログラムの中からはこれが
そのまま解像度として見えています。
現実的には、600dpiぐらいで良いので、それぐらいで考えてみます。

>>663
Primo、BullZip、Acrobat Pro(これは評価版)を試してみたのですが、色のアルファ
ブレンドはうまくできませんでした。

665:661
09/03/08 23:02:24
>>664
おいてめーw形式だけでも俺様に礼の一文を書けwww

666:デフォルトの名無しさん
09/03/08 23:11:08
>>665
ああっすみません。
4800dpi→600dpiは>>661さんのご提案を取り入れての判断でした。

667:デフォルトの名無しさん
09/03/08 23:43:20
その程度のことで礼を求めるなよ
だせえ

668:デフォルトの名無しさん
09/03/09 00:24:11
さすが大物さんは違いますね。
まあ会社でも鼻つまみ者だろうけどw

669:デフォルトの名無しさん
09/03/09 00:48:19
中学生でも思いつくようなアドバイスで霊を要求するってw

670:デフォルトの名無しさん
09/03/09 01:20:05
661は馬鹿なの?

671:デフォルトの名無しさん
09/03/09 01:39:59
うん

672:デフォルトの名無しさん
09/03/09 02:35:30
冗談もわかんねーのかよwお前らほんと低脳だなwww

673:デフォルトの名無しさん
09/03/09 02:42:08
そんなに悔しかったのか(プ

674:デフォルトの名無しさん
09/03/09 02:52:26
雑誌のグラビア写真でも300dpiくらいだよな


675:デフォルトの名無しさん
09/03/09 09:25:54
661が馬鹿なのはどうでもいい
それより664が大人なのが重要

こんな人間に私はなりたい

676:デフォルトの名無しさん
09/03/09 14:04:49
C# Express2008にてC#を勉強中です。
質問なのですが、ToolStrip上にtoolStripLabelを置いて、そのバックカラーを
変更したいのですが、BackColorプロパティーをいじっても変化ありません。
他のどこをいじれば変更できるのでしょうか?
そもそも、変更できない?


677:デフォルトの名無しさん
09/03/09 14:49:38
あんまり簡単ではないがToolStripRendererの派生クラスで制御できる
一通りヘルプの解説読んでググってみたりしても"さっぱり"理解できないのなら手を出すには早いかもね

678:デフォルトの名無しさん
09/03/09 14:56:15
Visual Styleに依存するのでむやみに変更するのは非推奨

679:デフォルトの名無しさん
09/03/09 15:28:37
皆様、ありがとうございます。

なるほど、そのtoolStripLabelが乗ってるtoolStripのRendererModeで動作が変わるんですね。
RendererModeをSystemにしたら変更が反映されました。
ありがとうございます。



680:デフォルトの名無しさん
09/03/11 14:47:19
ボタンクリックイベントとかで一時的に使ったBitmapとかImageってそこの処理抜ける前にDisposeした方がいいの?
それともそのスコープ抜けたときに勝手に開放してくれる?


681:デフォルトの名無しさん
09/03/11 14:53:40
Disposeしたほうがいい

682:デフォルトの名無しさん
09/03/11 17:24:03
一時的に作ってローカルな範囲だけで使って
外に漏らしてないと断言できるならならあえてDisposeしない理由がない

683:デフォルトの名無しさん
09/03/11 17:47:50
>>680
using使おうや


684:デフォルトの名無しさん
09/03/11 18:24:21
usingといえば、StreamReaderが元のStreamまで根こそぎ閉じるの勘弁して欲しいな

685:デフォルトの名無しさん
09/03/11 19:46:42
複数のオブジェクト間で受け渡したりするときはTextReaderを通すことが多いからな

686:デフォルトの名無しさん
09/03/11 19:53:39
>>684
なんで合理的な仕様じゃん。
そう思えないなら、ふらっとスレの議論じゃないけどDispoeのそもそもの意義が
わかってないんでしょ。

687:デフォルトの名無しさん
09/03/11 20:52:53
実際のとこスコープ外れたオブジェクトって即時消去されずに残ってるもんなの?
例えばこういう場合に明示的にDisposeするべきなのか、しなくてもいいのか迷う

private void hogehoge(string fname)
{
  Bitmap bmp = new Bitmap(fname);
  this.pictureBox0.Image = (Image)bmp.Clone();
  //bmp.Dispose();
}


688:デフォルトの名無しさん
09/03/11 20:54:48
そんなに頻繁に呼ばれないのならしなくても問題にはならないだろうけど
できるのにわざわざしない意味がない

689:デフォルトの名無しさん
09/03/11 21:01:27
>>688
できるのにしないのは、C#ってそもそもそういう部分を気にせずにコーディングできるのが強みだから
使わなくなった変数やオブジェクトはGCで自動的に開放してくれるからC++みたいにメモリ管理で苦労しなくていいって触れ込みだった気がする


690:デフォルトの名無しさん
09/03/11 21:10:08
GCはオブジェクトの生存範囲が分からない場合には有効だけど
>>687ではusingを書くか書かないかだけの違いだろ

691:デフォルトの名無しさん
09/03/11 21:10:13
using!using!

692:デフォルトの名無しさん
09/03/11 21:54:24
メモリで大きな画像を持ってると大変なことになりそうだしな 特にサーバなんかでは
必要無くなったら破棄するのが良いよ

693:デフォルトの名無しさん
09/03/11 22:08:44
>>687
.NETのBitmapは参照用途のつもりでもファイルをロックしてしまう
この例では pictureBox0 にクローンしたものを
わたしているから bmp は不要なんだが、Disposeしないと
GCが動くタイミングまで(いつかは不明)ファイルがロックされたままとなり、
結果、ファイルを削除あるいは移動しようと失敗してしまうことがありうる
よって、Disposeしとくべき


694:デフォルトの名無しさん
09/03/11 23:38:22
質問です。

開発上、とあるライブラリを仕様せよとの指令が下りました。

APIマニュアルはそれなりに整備されています。

しかしメソッドはプロパティーにアクセスした時に、
発行しうるExceptionの記述がまったく無いマニュアルでした。

そこでどのようなExceptionが発生するのか調査したいのですが、
ソースを直接参照できないため行き詰っております。

このような場合は、どのような調査を行ったほうが良いでしょうか・・・


695:デフォルトの名無しさん
09/03/11 23:42:46
逆コンパイル

696:デフォルトの名無しさん
09/03/11 23:47:10
C#をC++に変換してくれるツールないっすか?

697:デフォルトの名無しさん
09/03/11 23:47:44
ないよ

698:デフォルトの名無しさん
09/03/11 23:54:11
C#からC++/CLIへの変換なら簡単なのだけどねぇ

Instant C++ (C# Edition) ってのがあるけど、どの程度使える代物なのかは知らん

699:デフォルトの名無しさん
09/03/12 00:26:12
>>695
アドバイスありがとうございます。

C# 逆コンパイルで引っかかったものに Reflector というものがあるのですが、
こちらはこの手の会席で使う定番ツールみたいですね。

700:デフォルトの名無しさん
09/03/12 00:39:19
このサイトってどうなの?

++C++;// 未確認飛行 C
URLリンク(ufcpp.net)

701:デフォルトの名無しさん
09/03/12 00:46:02
普通に良いサイト

702:デフォルトの名無しさん
09/03/12 11:23:56
>>693
.NET3.5はその辺大丈夫みたいよ
3.0からなのか3.5からなのかはわからないけどロックされることがなくなったっぽい


703:デフォルトの名無しさん
09/03/12 15:19:06
一度MemoryStreamにコピーすれば問題ない。

704:デフォルトの名無しさん
09/03/12 19:32:35
>>702
むしろロックしない仕様の方に問題があると思うんだが。。
ロックしない仕様の方を大丈夫と表現する感覚が理解できない。

705:デフォルトの名無しさん
09/03/12 19:37:50
本来,メモリに読み込むときにしかファイルアクセスはいらないだろ

706:デフォルトの名無しさん
09/03/12 19:42:25
メモリを占有するのが嫌だからファイルをロックするんだよw
何言ってんだか。

707:デフォルトの名無しさん
09/03/13 09:16:06
質問です
メンバ変数hogeとコンストラクタやメソッドhoge()があるとき
this.a = foo;
とやると曖昧と言われてエラーが出るのですが
名称変更せずにこれを解決する方法はないでしょうか?

708:デフォルトの名無しさん
09/03/13 09:31:12
hogeはどこいった
どこに何があるのか分からん
曖昧と言われてエラーって台詞そのものが曖昧

709:デフォルトの名無しさん
09/03/13 09:36:47
707
なにがなんだかわからない

710:デフォルトの名無しさん
09/03/13 09:47:16
>>707
ぐだぐだ言わずにソースコード出せよ
お前の稚拙な説明では意味不明だ

711:デフォルトの名無しさん
09/03/13 10:19:15
>>707
吹いたwww

712:デフォルトの名無しさん
09/03/13 11:14:40
>>707
ワロタ
赤くしとこ

713:デフォルトの名無しさん
09/03/13 12:31:09
うわー恥ずかしい

class hoge
{
int hoge;

public hoge()
{
}
public void hoge()
{
}

public void hoge(int foo)
{
this.hoge = foo;//エラー
}

}

こんな感じなのですが

714:デフォルトの名無しさん
09/03/13 12:35:31
それthis.hoge = foo;の行がなくてもコンパイルエラーになる
名前変える以外にない

715:デフォルトの名無しさん
09/03/13 12:43:43
・メンバ名と型名を同じにはできない
・メソッドのオーバーロード以外で同じ名前のメンバが複数存在することはできない

716:デフォルトの名無しさん
09/03/13 12:50:35
サンクス

717:デフォルトの名無しさん
09/03/13 12:59:09
それを眺めていてふと思ったんだが
class Hogeで、
public static implicit operator Hoge(int intValue)
 return new Hoge(intValue);
でHoge hoge = 1;みたいにしてインスタンスの生成が可能で、

public static implicit operator int(Hoge hoge)
 return hoge.IntValue;
で、int a = hoge;みたいな定義型変換ができるけど、

インスタンスを生成しないで代入するhoge = 1;ってできたっけ
代入演算子はオーバーロードできないから無理なんだっけ?

718:デフォルトの名無しさん
09/03/13 13:05:27
hogeにインスタンスが入ってるかどうかにかかわらず
hoge = new Hoge { intValue = 1; };と同じ
新しくインスタンスを作らずにintValueだけ変えるのは無理

719:デフォルトの名無しさん
09/03/13 13:10:19
さんくす。なら
hoge.IntValue = 1;
とか
hoge.SetInt(1);
とかしかないのか。
どっちかというこ後者かな?


720:デフォルトの名無しさん
09/03/13 14:07:25
public void this(int hoge)

721:デフォルトの名無しさん
09/03/13 22:15:09
あれ?そうだっけ?

public static implicit operator Hoge(int value)

じゃなかったっけ?

Hoge a = 1;

こう使いたいんでしょ?
XNamespace かなんかで使ってるように

722:デフォルトの名無しさん
09/03/13 22:18:11
あごめん、勘違いしてた。生成しないでか。

723:デフォルトの名無しさん
09/03/13 22:23:47
ようはseal型にどれだけ近づけるかと、
ポインタ的な操作(delegate等)をどう簡単に実装するかのジレンマだな

724:デフォルトの名無しさん
09/03/14 08:16:03
TextBox1に入力された数字をInt型のRAMに取り込むにはどうすればいいんでしょうか?

725:デフォルトの名無しさん
09/03/14 08:51:16
int n = Convert.ToInt32(TextBox1.Text);

726:デフォルトの名無しさん
09/03/14 08:52:52
ありり

727:デフォルトの名無しさん
09/03/14 17:27:22
Textboxに数字のみ入力させようと思い、以下のイベントハンドラーとプログラムを用意しました。
するとコンパイルエラーが発生し困っています。
エラーメッセージも以下に用意しました。
私が用意した文のどこがおかしいのでしょうか?



this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

private void textBox2_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
}

デリゲート 'System.EventHandler' に一致する 'textBox2_KeyPress' のオーバーロードはありません。 (CS0123) - C:\Users\masamune\Documents\SharpDevelop Projects\Hello\MainForm.Designer.cs:74,30


728:デフォルトの名無しさん
09/03/14 17:32:39
>>727
KeyPressEventArgs

EventArgs

729:デフォルトの名無しさん
09/03/14 17:34:20
> this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

ここがおかしい。

普通に KeyPress イベント作って、Designer.cs の中身を確認してみれば
いいと思うよ。

730:デフォルトの名無しさん
09/03/14 17:38:49
エラーメッセージの通り。
 
そういうエラーメッセージが出たら、とりあえずMSDNで
System.EventHandlerを検索する。
 
URLリンク(msdn.microsoft.com)(VS.80).aspx
 
デリゲートのシグネチャが
public delegate void EventHandler (
    Object sender,
    EventArgs e
)
であると書いてある。で、textBox2_KeyPressメソッドはこの
シグネチャと一致していない(第二引数の型が一致しない)。
 
そこを直すとまたエラーメッセージが出ると思うので、そのエラー
に関連すると思われるトピックをMSDNで調べる。これを繰り返す。

731:デフォルトの名無しさん
09/03/14 17:43:26
>>728
>>729

即レスあざーす。
早速試してみます。

Cを数年かじっている経験から感覚的に進めてたら急に壁が出来てしまってw

732:デフォルトの名無しさん
09/03/14 17:44:04
>>730

あざーす

733:デフォルトの名無しさん
09/03/14 20:44:09
あざーす、って何?

734:デフォルトの名無しさん
09/03/14 20:47:32
Azure の開発コード名

735:デフォルトの名無しさん
09/03/14 20:55:34
アザトースのことだろ

736:デフォルトの名無しさん
09/03/14 20:56:34
ASUSだろ

737:デフォルトの名無しさん
09/03/14 21:03:28
パチンコのCMでもりゆきの格好してる奴だよ

738:デフォルトの名無しさん
09/03/14 21:10:01
others
つまり(お前の意見じゃあてにならないから)他の意見くれってことだろ

739:デフォルトの名無しさん
09/03/15 01:32:44
>>734-738
ボケのレベルが低い。
俺様がまぢレスしてやる。







安産です。



740:デフォルトの名無しさん
09/03/15 01:34:28
一番レベル低い奴が満を持して登場

741:デフォルトの名無しさん
09/03/15 01:34:49
うん?

742:デフォルトの名無しさん
09/03/15 01:35:59
安産ですとか勝訴ですとかこの手のギャグに弱い

743:デフォルトの名無しさん
09/03/15 03:38:24
それってギャグなの?

744:デフォルトの名無しさん
09/03/15 09:20:26
最近VB.NETからC#に移行しようとしているものですが質問です

C# の public static class というのはVBで言うところの public shared class みたいなもので
ほぼVB.NETのモジュール的な考え方でいいんでしょうか?

745:デフォルトの名無しさん
09/03/15 09:45:37
SQL SERVER 2005 とか2008のDB作成するときにでてくるパスの変更部分

テキストボックスの横にボタンがあって、1つのセルに組み合わさったようなものをC#で作成したいんですが
何か簡単な方法はありませんか?

Cellを継承して自作するしかないんでしょうか?

746:デフォルトの名無しさん
09/03/15 11:18:35
>>744
たとえば、System.Mathクラスは
public static class なんだけど、じゃあMathクラスはVB.NETのモジュール的なもの?
君のいうところのVB.NETのモジュールが何を指すのか分からんので答えようがないが。
普通に"静的クラス C#"でググったほうが早いよ

747:デフォルトの名無しさん
09/03/15 11:28:01
>>746
VBとC#の両方知ってる人なんて山ほどいるんだから、知らなければ
黙ってればいいと思うんだが。

おれは、ぐぐって
URLリンク(www.rocksthoughts.com)
これ見て、ふうんと思ったが、<Extension()>なんてアトリビュート
知らないから、コメントしなかった。

748:デフォルトの名無しさん
09/03/15 11:33:18
>>747
偉い偉い立派だよ君
レスしなければもっと偉かったのにね!

749:デフォルトの名無しさん
09/03/15 11:52:28
>>747
おいおい、2つのコードやページのタイトルを見ればExtensionが属性がなんなのか想像がつくだろうに。

750:デフォルトの名無しさん
09/03/15 12:07:30
>>748,749
746さん、ちーす


751:デフォルトの名無しさん
09/03/15 12:10:50
何このスレ・・・

752:デフォルトの名無しさん
09/03/15 13:13:27
>>749
そりゃ想像はできるさ。ぐぐって見つけて概要を想像したのを、
そのままここに書いたらただの知ったか妄想じゃないか。
要するに、ちゃんとした回答ができればいいけど、
できないから書かなかったということ。

その次にこのスレに来たら、変な回答しかついてなかったから、
あえて留保(=言い訳)付でリンクを提示した。
リンクは提示したんだから、質問者が読みたければ、それを読んで
自分で判断すればいい。

753:デフォルトの名無しさん
09/03/15 13:21:39
ExtentionAttributeなんかC#しかやってない奴はあんまり知らんだろうな

754:デフォルトの名無しさん
09/03/15 14:30:03
>>752
というかそもそも元の質問が拡張メソッドの話でないのだから、
蛇足になる拡張メソッドについて言及しているところは避けようよ。

>>744
少なくとも構文上は、ほぼVB.NETのモジュールのような存在という考え方でいい。
細かい話をすれば、C#の視点から見たVB.NETのModuleとは、
単にStandardModule属性付きの静的クラス。

そもそもVB.NETでClassにSharedは付けられない気がするけど。

755:デフォルトの名無しさん
09/03/15 14:33:43
>>752
ごちゃごちゃ言わずに、
黙ってればいいのに

756:デフォルトの名無しさん
09/03/15 18:51:03
オマエモナー

757:デフォルトの名無しさん
09/03/15 19:11:22
まぁまぁ、ぬるぽぬるぽ

758:デフォルトの名無しさん
09/03/15 19:18:01
がっ

759:デフォルトの名無しさん
09/03/16 00:29:10
Type 型のインスタンスからその型のデフォルト値を取りたいんだがどうすればいい?
つまり default(T) みたいなことをしたいんだが。

760:デフォルトの名無しさん
09/03/16 00:48:09
Assembly.GetAssembly(typeof(T)).CreateInstanceで行けるかな。試してないけど。

761:デフォルトの名無しさん
09/03/16 01:13:14
>>760
それだとインスタンスを生成するのでだめなんだ。

762:デフォルトの名無しさん
09/03/16 01:16:05
intとかstringとかdatetimeでもデフォルト値ってとれたっけ

763:デフォルトの名無しさん
09/03/16 01:18:46
>>762
数値や列挙型だと0、参照型だと null、構造体 T だと new T() と同じになる。

764:デフォルトの名無しさん
09/03/16 01:24:40
インターフェースの場合とか、列挙体の場合とか考えると、結構ややこしいな。

765:デフォルトの名無しさん
09/03/16 01:26:49
これでいけるんじゃまいか。
object o = t.IsValueType ? Activator.CreateInstance(t) : null;

766:デフォルトの名無しさん
09/03/16 01:27:37
Nullable<T>は?

767:デフォルトの名無しさん
09/03/16 01:39:06
>>766
Activator.CreateInstance()がnullを返す。

768:デフォルトの名無しさん
09/03/16 01:42:27
>>765でいけたよ。サンクス。

769:デフォルトの名無しさん
09/03/16 22:47:55
SortedList<double, int> 型でデータがあるとして、
入ってるキーのうち「X以下で最大の数」ってのを
2分法で求めたいんだが自分で書くしかない?
そういう関数があってもよさそうなもんだが。

770:デフォルトの名無しさん
09/03/16 22:57:34
そんな関数大量に作られても邪魔だろ。

771:デフォルトの名無しさん
09/03/16 23:35:23
>>769
URLリンク(msdn.microsoft.com)(VS.80).aspx

772:デフォルトの名無しさん
09/03/16 23:51:44
>>771
あんがと

773:デフォルトの名無しさん
09/03/17 01:33:53
>>771
特定の値を探すんならそれでいいだろうけど、
X以下で最大の数 みたいに特殊な条件で検索するには向かないのでは

Array.BinarySearchでなくとも、List.BinarySearchやSortedList.ContainsもO(log n)

774:デフォルトの名無しさん
09/03/17 01:50:51
じゃあどうすればいいの

775:デフォルトの名無しさん
09/03/17 01:58:37
自分で書けばいいじゃないか

776:デフォルトの名無しさん
09/03/17 08:41:16
>>773
汎用性を求めているわけじゃないんだから、
Xのインデックスを求めてそこから範囲指定BinarySearchじゃないかな

777:デフォルトの名無しさん
09/03/17 13:55:39
ちょっとC#ってくくりじゃない質問なんですけど、
ブログとかに使われるWEB認証の歪んだ数字の画像なんだけど
あれってそのURLにアクセスする度に表示される画像変わるじゃん。

サーバー側はどうやって自分が出力した画像に書いてあるナンバーと
クライアントが打ち込んだ数字のナンバーが合致しているかを認証するんだろう。

この仕組みご存じの方居ますか?

778:デフォルトの名無しさん
09/03/17 14:02:28
データベースに保存しとくだけ。

779:デフォルトの名無しさん
09/03/17 14:12:10
データベースに保存(笑)

780:デフォルトの名無しさん
09/03/17 14:18:26
すれち

781:デフォルトの名無しさん
09/03/17 14:29:27
>>777
usernameごとに認証ナンバーを発行してるだけ

782:デフォルトの名無しさん
09/03/17 14:36:11
大体はセッションに保存じゃね?
詳細はCAPTCHAでググるよろし

783:デフォルトの名無しさん
09/03/17 14:48:42
>>781
あー、なるほど。
納得!

じゃあ認証されないって事は
やっぱりリクエスト2回投げちゃってるのかなー。

>>782
有益な情報ありがとう。
調べてみます。

784:デフォルトの名無しさん
09/03/17 20:17:52
PHPのpreg_replace_callback()みたいな実装ってある?
正規表現で複雑な処理がしたくて・・・

785:デフォルトの名無しさん
09/03/17 20:27:02
>>784
string str = Regex.Replace(
 input,
 @"\d+",
 (m) => Int32.Parse(m.ToString()).ToString("000")
);


786:デフォルトの名無しさん
09/03/17 20:33:53
>>784
re.sub()のreplに関数を渡すという話ではなくて?

787:デフォルトの名無しさん
09/03/17 20:40:06
円を描画をしたいです。
プロパティからインスタンスを作成したいのですがどのコンストラクタを選べばいいのでしょうか?

788:デフォルトの名無しさん
09/03/17 21:12:37
C#語でおk

789:デフォルトの名無しさん
09/03/17 21:20:07
System.Drawing.Graphics

790:デフォルトの名無しさん
09/03/17 21:25:18
最近やけに日本語でおkレベルの質問が目に付くな

791:デフォルトの名無しさん
09/03/17 21:28:26
クラスのオブジェクトを作成したらインスタンスですか?
クラスのインスタンスを作成したらオブジェクトと同じで、インスタンスはオブジェクトということでいいでしょうか。
クラスは型で作成したらオブジェクトですか?

792:デフォルトの名無しさん
09/03/17 21:29:24
ワッケワッカラン♪

793:デフォルトの名無しさん
09/03/17 21:39:49
誰かスレのためにクラス・コンストラクタ・メソッド・インスタンスをわかり易くまとめろよ。
そういう基本的な部分があいまいな人かなりいると思うぞ。
俺は今から風呂入ってくる。

794:デフォルトの名無しさん
09/03/17 21:41:09
そうだな
風呂でじっくり纏め上げて来い

795:デフォルトの名無しさん
09/03/17 21:47:35
さすがにそのレベルは半年ROMってろカスとしか言えんわ

796:デフォルトの名無しさん
09/03/17 22:02:35
でも自分がその半年ROMってろのカスのレベルの時に
半年ROMってろカスって言われたらむかつくだろ?

797:デフォルトの名無しさん
09/03/17 22:07:46
半年ROMる暇があったら、まともな本を読んで理解を深めてください。

798:デフォルトの名無しさん
09/03/17 22:21:49
C#以前の問題だろ…

799:デフォルトの名無しさん
09/03/17 22:26:46
でも半年ROM中にまともな本読んで理解を深めていて質問したくなったら困るだろ?

800:デフォルトの名無しさん
09/03/17 22:32:09
円を書きたいんです。
描画の仕方詳しく教えて下さい。
ぐぐってもうまくいきません

801:デフォルトの名無しさん
09/03/17 22:33:00
日本語でおk

802:デフォルトの名無しさん
09/03/17 22:33:41
>>800
よくわからないけど、これを試してみたら?
URLリンク(youryella.wankuma.com)

803:デフォルトの名無しさん
09/03/17 22:40:35
>>800
Console.WriteLine("○");

804:デフォルトの名無しさん
09/03/17 22:41:44
>>801>>803は質問にすら答えられない低脳かつ荒らしかつ穀潰しかつNEET

805:デフォルトの名無しさん
09/03/17 22:51:04
まずは質問の仕方を勉強してからこようね^^

806:デフォルトの名無しさん
09/03/17 22:54:50
質問に答えられなかったらレスしなくていいんだよ^^

807:デフォルトの名無しさん
09/03/17 22:59:28
>>800
Rect theRect;
PenSize(2,2);
SetRect(theRect,20,20,70,70);
FrameOval(theRect);

808:デフォルトの名無しさん
09/03/17 23:05:18
800は釣りだろ

809:デフォルトの名無しさん
09/03/17 23:09:53
URLリンク(developer.apple.com)

810:デフォルトの名無しさん
09/03/17 23:11:13
スレ違いのレスをしてる荒らしがたくさんいまちゅね

811:デフォルトの名無しさん
09/03/17 23:16:46
>>810
でもさ、>>800みたいな超基本みたいな質問する人ってなんだかな、って気がしない?
こんなことぐらい、本の4,5冊でも見れば簡単にわかるだろうに。

812:デフォルトの名無しさん
09/03/17 23:23:03
そしてこれをきっかけに初心者スレが建ち
そこで同じようなレスが繰り返され
さらなる初心者スレが建つことが繰り返されるのであった

813:デフォルトの名無しさん
09/03/17 23:34:40
>>811
4,5冊もいらんだろw

もし4,5冊読まないと分からないような問題だとしたら
ここで質問するべき問題だと思うんだが。

814:786
09/03/17 23:38:25
すまない…Pythonスレと間違えてたw

815:デフォルトの名無しさん
09/03/17 23:57:19
APIを叩いたことないやつはこれだから困る

816:デフォルトの名無しさん
09/03/18 00:02:32
ニーモニックを知らない若造が何を言うか

817:デフォルトの名無しさん
09/03/18 00:14:11
>>803はとんち的には100点

818:デフォルトの名無しさん
09/03/18 00:29:40
>>817
実際にそれが現実解ってこともなくはないしなw

819:デフォルトの名無しさん
09/03/18 00:42:54
お前ら冷たすぎ

>>800
円を描画するんなら、Controlの派生クラスの中でGraphicsクラスを使えばいい。
例えばこんな感じ。
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawString("円", Font);
}

820:デフォルトの名無しさん
09/03/18 00:43:54
下らないネタをいつまでも引っ張りすぎ

821:デフォルトの名無しさん
09/03/18 12:55:10
略して下ネタ

822:デフォルトの名無しさん
09/03/19 09:26:04
ManagedDirectXつかってシューティングを作っているのですが、
何らかの描画命令(たとえばfont.DrawText)を1フレームに300回くらいやると、
描画命令の増加に従って徐々にFPSが落ちていきます。
描画命令をコメントアウトすると治るのでそれ以外が原因になっているとは考えにくいです。
また、テクスチャの有無やアルファの有効無効、頂点数にも影響されないようです。
デバイスの初期化はこうやっています
Direct3D.PresentParameters param = new PresentParameters();
param.Windowed = true;
param.SwapEffect = SwapEffect.Discard;
param.MultiSample = MultiSampleType.EightSamples;
device = new Direct3D.Device(0,Microsoft.DirectX.Direct3D.DeviceType.Hardware, wind,CreateFlags.HardwareVertexProcessing, param);
device.RenderState.CullMode = Cull.None;
device.RenderState.Lighting = false;
device.RenderState.AlphaBlendEnable = true;
device.SetTextureStageState(0, TextureStageStates.AlphaOperation, (int)Microsoft.DirectX.Direct3D.TextureOperation.Modulate);
device.SetTextureStageState(0, TextureStageStates.AlphaArgument1,(int)Microsoft.DirectX.Direct3D.TextureArgument.TextureColor);
device.SetTextureStageState(0, TextureStageStates.AlphaArgument2,(int)Microsoft.DirectX.Direct3D.TextureArgument.Current);
device.RenderState.SourceBlend = Blend.SourceAlpha;
device.RenderState.DestinationBlend = Blend.InvSourceAlpha;
D3DTex.Direct3DDevice = device;
verts = new CustomVertex.TransformedColoredTextured[10];
vertexBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColoredTextured), 5000, device, 0, CustomVertex.TransformedColoredTextured.Format, Pool.Managed);
sprite_ = new Sprite(device);
ClientSize_ = wind.ClientSize;
どうかご教授願います。

823:デフォルトの名無しさん
09/03/19 11:09:17
多数の描画すれば、描画待ちでフレームレートが
悪化するのは、この手の処理では常識だと思います。

824:デフォルトの名無しさん
09/03/19 11:12:52
あとfont.DrawTextは重い

825:デフォルトの名無しさん
09/03/19 11:36:57
>>823
それはそうなんですが、表示してるのはただのスプライト(4頂点)なんです。
C2DにGeforce8600GTをつんでいるのに400スプライトで15FPSもでないのできっと何かが悪いのだとは思いますが・・・。
スプライトの描画部はこうなってます。これより前にテクスチャの設定や頂点の設定があります。
Draw2Dは使っていません。

triは描画する三角形の数で四角いスプライトなので通常2を設定。
if (device == null) return;
GraphicsStream stm = vertexBuffer.Lock(0, 0, 0);
stm.Write(verts);
vertexBuffer.Unlock();
device.SetStreamSource(0, vertexBuffer, 0);
device.VertexFormat = CustomVertex.TransformedColoredTextured.Format;
device.DrawPrimitives(ptype, 0, tri);
cPolygon += tri;

826:デフォルトの名無しさん
09/03/19 11:46:11
スプライト一枚ごとにそんなことやってたら遅いに決まってる
可能な限り同じテクスチャでまとめて書き込んでまとめて描画しろ

827:デフォルトの名無しさん
09/03/19 11:46:41
GraphicsStream stm = vertexBuffer.Lock(0, 0, 0);
stm.Write(verts);
vertexBuffer.Unlock();

↑この処理を400回やってるなら重くなって当り前かと
DrawPrimitiveで描いてるって事はGRAMをロックしてんだろ?

何れにせよDrawPrimitivesを数百回呼び出したら重い
数百枚のスプライトをオンメモリ上に1つのプリミティブで作成しといて
CPU側で座標指定してDrawPrimitiveUpとかやれば大分違うと思う

Managed DirectXはよく知らないけど

828:デフォルトの名無しさん
09/03/19 11:48:20
DrawTextなどを300回って書いといてそりゃねーだろ

バッチ処理は基本だが、にしても遅すぎるな
マネージコードのGCが暴れている可能性もあるからCLRProfilerとかで要調査

829:デフォルトの名無しさん
09/03/19 11:48:51
お、便乗しよっと

「メモリのロック」の意味がよくわかりません
必要な呪文程度に思ってます
このロックとは具体的にはどういう動作をしてるんでしょうか?


830:デフォルトの名無しさん
09/03/19 11:51:28
>>826-827
なるほど。
DrawPrimitivesの小口多数実行とDrawTextのやりすぎの複合要因だったんですね・・・。
テクスチャごとに1回ずつDrawPrimitivesを実行し、DrawTextの使用を見直してみます。

お答えくださった皆様、本当にありがとうございました。
改良に取り組んでみます!

831:デフォルトの名無しさん
09/03/19 12:06:36
>>829
そこ今から俺が触るからおまえら触るなよ!!
ってこと

832:デフォルトの名無しさん
09/03/19 12:14:45
少し便乗して

テクスチャ毎に描画というのは各頂点をGraphicsStreamに書き込んで

DrawPrimitives(PrimitiveType.TriangleList,0,(描画するテクスチャの場所*2));
で良いのですか?

833:デフォルトの名無しさん
09/03/19 13:12:45
>>831
ググればすぐにわかるだろうにw
URLリンク(www.stackasterisk.jp)


834:デフォルトの名無しさん
09/03/19 13:29:17
メモリのロックってマルチスレッド絡みの処理だったのかw
理解しました、ありがとう

835:デフォルトの名無しさん
09/03/19 20:17:12
下記いずれかのデータを大量にListに格納する場合、速度面等からいうと
どちらを選択した方が良いのでしょうか。格納するデータが増えることは
無いので拡張性を考慮する必要はありませんが、ググってもイマイチ分からず…。

・KeyValuePair<string,string>
・Key,Valueのstringを持ったクラス

836:デフォルトの名無しさん
09/03/19 20:30:13
Dictionary

837:デフォルトの名無しさん
09/03/19 20:32:15
なんで実測してみないんだ?

838:デフォルトの名無しさん
09/03/19 21:06:17
大量のデータから対象を素早く取り出したいならHashtable一択
.NET2.0以降のHashtable実装はDictionaryクラス

詳しく知りたいなら「データ構造とアルゴリズム」でぐぐればいいよ

839:デフォルトの名無しさん
09/03/19 21:16:08
まあ待てインデックスでのアクセスだけでいいのかも知れん
簡単にHashtable/Dictionaryを挙げるのは早計だ

840:デフォルトの名無しさん
09/03/19 21:19:07
>>839
>>835

841:デフォルトの名無しさん
09/03/19 21:22:40
純粋に>>835の質問に答えると後者だな
KeyValuePairは構造体だから出し入れ遅いよ

842:デフォルトの名無しさん
09/03/20 07:57:03
2147483647個以上の値を格納できるListみたいなのは
自作するしかない?

843:デフォルトの名無しさん
09/03/20 08:01:54
DB使えよwwww

844:デフォルトの名無しさん
09/03/20 08:12:59
本当にそんな物が必要なのかどうか検討するところからだな。

845:デフォルトの名無しさん
09/03/20 08:16:32
今List型で動いてるプログラムがあるんだが、
「メモリを50GB積むからこのデータを処理できるようにしてくれ」
って要求が来たんだ。

846:デフォルトの名無しさん
09/03/20 08:21:31
50Gとかw

847:デフォルトの名無しさん
09/03/20 08:43:44
単純計算で一オブジェクトあたり25b使えるわけだけど、
そのやり方は上手くいかないと思うわwww

IList<T>インターフェイスを提供するDBオブジェクト自作したほうがいいよwww

848:デフォルトの名無しさん
09/03/20 08:50:10
>>847
DBってディスクに書き込むイメージがあったんだがそうでもない?
金(50GBのメモリ分)がかかっても速いほうがいいんだが。

849:デフォルトの名無しさん
09/03/20 08:53:55
でかいRAMDISKつくってそこにDBおけばいいんじゃね?

850:デフォルトの名無しさん
09/03/20 08:57:42
DBについて勉強してくる
ありがと。

851:デフォルトの名無しさん
09/03/20 11:43:19
でもどっかの企業が全部オンメモリにするデータベースを運用しているっていう話を聞いたことがある。

852:デフォルトの名無しさん
09/03/20 11:44:45
そりゃおらくる

853:デフォルトの名無しさん
09/03/20 11:54:42
SQLiteやMySQLがオンメモリモードもってたとおもった。

854:デフォルトの名無しさん
09/03/20 12:45:42
配列なら添え字にlongが使える。
このため64bitの.NET Frameworkなら4GB越えの配列を扱える。
32bitの.NET Frameworkでもlongが使えるが、intの範囲を使い切る前にmemory不足に陥る。
64bitの.NET FrameworkならListなどのコレクションもトータルで4GB以上使えるが、
添え字がint限定なのでそれが上限になる。


855:デフォルトの名無しさん
09/03/20 13:51:31
すべてのユーザーが毎回50GB相当のデータを要求するわけではないんでしょ
OSのディスクキャッシュとかDBのメモリキャッシュに50GBメモリを活用してもらえば、
十分なパフォーマンスが出ると思うがね

856:デフォルトの名無しさん
09/03/20 14:23:45
>>855
十分なパフォーマンスが要件ではなく、
メモリで動作することなんじゃね?
要件定義を間違えるとそうなる。

857:デフォルトの名無しさん
09/03/20 14:41:19
しかし、仕事でDBを使うはいつものことだが、21億件のデータを突っ込んだことはないなw
一体何をしようとしてるんだ。

858:842
09/03/20 14:56:58
シミュレーション系です。

859:デフォルトの名無しさん
09/03/20 21:46:13
あー・・・ってそういうのもC#でやるもんなのか

860:デフォルトの名無しさん
09/03/20 21:51:47
ものにもよるだろうけど生産性との兼ね合いでそれもありじゃね?
まぁ自分的にはF#を使いたいと子だが

861:デフォルトの名無しさん
09/03/20 22:06:16
要素へのアクセスが添字だけですむなら、ただの配列の方がいいけどね。
普通にC#で書いたプログラムを、64bit環境で実行すればよい。

862:デフォルトの名無しさん
09/03/20 23:18:41
円をformの中でピンポンの様に動かしたいんですがどうすればよいのかご教授下さい。
周期的に座標を変化させていけばいいのか、他になにか方法があるのか・・
現在までのソースを示しておきます。
namespace circ
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();

}

void MainFormPaint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;

Pen pen = new Pen(Color.Green, 1);
g.DrawEllipse(pen, 60, 60, 30, 30);

}
}
}


863:デフォルトの名無しさん
09/03/20 23:40:59
何言ってんのお前?

864:デフォルトの名無しさん
09/03/21 00:08:26
>>862
Forms アプリなら Timer 使え。


865:デフォルトの名無しさん
09/03/21 00:52:33
Managed DirectXでコーディングしていrのですが、
ランタイムが入っていない場合の動作を定義するにはどうしたらよいのでしょうか?

FileNotFoundExceptionがthrowされることはわかったのですが、
どの時点でtry catchするべきかよくわかりません・・・。

using System・・・
(略)
using Microsoft.DirectX.Direct3D;
using Direct3D = Microsoft.DirectX.Direct3D;

    Direct3D.Device = null;
try
{
    Direct3D.Device = new Direct3D(なんとか);
}
catch(Exception e)
{
    System.Diagnostics.Debug.MessageBox.Show(e.ToString());
}
のような書き方をすると、
newをしくじった時のcatchはできるんですがDevice型自体を宣言できなった時にcatchするにはどのようにコーディングすればよいのでしょうか?

866:デフォルトの名無しさん
09/03/21 00:59:06
System.Reflection.Assembly.GetModule()

867:デフォルトの名無しさん
09/03/21 01:00:56
>>866
うおおおお
ああああありがとう!!!

868:デフォルトの名無しさん
09/03/21 01:33:51
>>862
ピンポンの動きはよく分からんが、
こんな感じのものを作りたい?
using System;
using System.Drawing;
using System.Windows.Forms;
namespace circ {
public class MainForm : Form {
Timer timer;
int x;
int y;
public MainForm() {
Paint += new PaintEventHandler(MainForm_Paint);
timer = new Timer();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = 500;
timer.Enabled = true;
}
void MainForm_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawArc(Pens.Green, x, y, 10, 10, 0, 360);
}
void timer_Tick(object sender, EventArgs e) {
x = (x + 10) % Width;
y = (y + 20) % Height;
Invalidate();
}
}
}

869:デフォルトの名無しさん
09/03/21 10:09:56
>>868
ありがとう御座います。

動きの基本はそれです。
頂いたソースをベースに以下の仕様を考えています。

@スタート時、円は二個
A円の動きは直線
Bスタート時二個円の直進方向は異なる
C壁にぶつかって跳ね返る
D二個の円がぶつかると円が1個増える。
E増えた円も直線動作を行う。
F繰り返し

円同士がぶつかる判定と円を増やしていくにはどうしたらいいんでしょうか?




870:デフォルトの名無しさん
09/03/21 10:18:29
1.お互いの円の中心が半径の2倍より近づいていたら衝突したと見なす
2.円をList<円>等で保持しておいて、衝突したら新しい円を追加する

871:デフォルトの名無しさん
09/03/21 11:10:16
なんつーかやりたいこととやれることのギャップが激しすぎるんじゃねーの?
全部ココで質問するつもりか?

872:デフォルトの名無しさん
09/03/21 11:14:12
このスレの連中はみんな初心者だろ

873:デフォルトの名無しさん
09/03/21 11:21:49
ふらっとすれもうなくなったんだっけ?

874:デフォルトの名無しさん
09/03/21 11:23:28
あるよ

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

875:デフォルトの名無しさん
09/03/21 12:46:36
まさかとは思うがこれ宿題じゃないだろうな

876:デフォルトの名無しさん
09/03/21 12:47:58
宿題スレもあるね!

C#,C#の宿題片付けます。
スレリンク(tech板)l50


877:デフォルトの名無しさん
09/03/21 12:48:18
宿題じゃなく春休みの課題です

878:デフォルトの名無しさん
09/03/21 12:58:29
どう見ても宿題です。有り難うございました。

879:デフォルトの名無しさん
09/03/21 17:01:24
質問です。課題と宿題の違いってなんですか?

880:デフォルトの名無しさん
09/03/21 18:36:28
辞書ひけやゴミ

881:デフォルトの名無しさん
09/03/22 10:20:32
Tooltipの表示タイミングはそのままに、Tooltip.Showを使わずに
表示位置を制御する方法はないでしょうか。
↓でも議論されていますが、具体的な方法が分かりません…。

URLリンク(bbs.wankuma.com)

882:デフォルトの名無しさん
09/03/22 10:39:38
デフォルトだと、マウス位置がベースになるんだっけか。
となると、それを誤魔化すか、デフォルトの動作をフックして、
位置を指定して表示するしかないでしょ。

883:デフォルトの名無しさん
09/03/22 10:51:50
Showを使っても問題ないんですが、表示タイミングだけは
準拠したいという所なんです…。良い方法ないものでしょうか。

884:デフォルトの名無しさん
09/03/22 10:59:44
表示されるタイミングで、何かのメッセージが来るだろうから、
そいつを握りつぶしつつ、Show() すればいいんじゃね?

885:デフォルトの名無しさん
09/03/22 13:38:37
今ラジアンで角度を処理するクラスを作っているのですが、次のような動作をさせたいんです
1.値を代入したときは値を正規化してからいれる(負値だったら正値に、2π以上だったら2πで剰余算)
2.値を参照するときはそのまま参照
3.floatと同じように扱える
プロパティを使って実装すると次のようになりますが
  class RegularizedAngle
  {
    private float InAngle;
    public float Angle
    {
      get { return Angle; }
      set
       {
         //Angleが負値だったら正値に
         if (Angle < 0) Angle = PIx2 + Angle;
         //Angleが2π以上だったら2πで剰余算
         Angle %= (float)(Math.PI * 2f);
       }
    }
   }
これを普通のfloatと同じように扱いたいんです。
たとえば
RegularizedAngle Ang = (float)(Math.PI * 2f);   //すなわち6.28・・・の代入
Ang += 1;                         //代入したとき内部で正規化がおこなわれて1になる。

Ang += Ang;
//これで2になる?こんなかんじで見た目を組み込み型みたいにしたいんです。
しかし上記のプロパティをつかった方法だとアクセスするときに
Ang.Angle としなければなりませんし、宣言するときにはnewが必要です
組み込み型へのオーバーライドとかでできるのでしょうか?



886:885
09/03/22 13:54:58
>>885
ですがすいません。初心者スレに移動します。
>>885は無視してください。

887:デフォルトの名無しさん
09/03/23 01:16:27
C#でrubyのWWW::Mechanizeみたいなネットワーク系のライブラリありますか?

888:デフォルトの名無しさん
09/03/23 01:48:39
Mechanizeがネットワーク系とは思わないが、
あとC#じゃなくて.NETのコンポーネントだけど
System.Windows.Forms.WebBrowserが同等かな。
(もしくはWPFでそれに相当する物)
もちろんもっと低レベルのものもあります。

889:887
09/03/23 02:04:56
ありがとうございます
見てみます

890:デフォルトの名無しさん
09/03/23 18:23:08
Vista、VisualStdio2008で開発しているのですが、

hProcess.PriorityClass = ProcessPriorityClass.BelowNormal;

このように外部プロセスの優先度を変更しようとするコードをF5「デバッグ開始」で実行すると、エラーが発生し、
エラーメッセージは「アクセスが拒否されました。」となっています。
また、Ctrl+F5「デバッグなしで開始」で実行すると、問題なく動きます。
デバッグありでこのコードを動かすことはできないのでしょうか?

891:デフォルトの名無しさん
09/03/23 20:14:28
>>890
とりあえず VS(devenv) を昇格起動してみな

892:デフォルトの名無しさん
09/03/23 20:50:03
>>891
レスありがとうごいます。
昇格起動とは管理者権限で実行ということでしょうか?

AdministratorでログインしUACをオフ、devenv.exeを右クリックから管理者として実行を選択しましたが、
依然として「アクセスが拒否されました」になってしまいます。。。

893:デフォルトの名無しさん
09/03/23 20:58:17
>>892
ありゃ、とりあえず昇格すれば大丈夫だった気がするが。
まぁ駄目ならしゃーない。利便性落ちるけどこの手で。
プロジェクトの Properties
 → デバッグ
 → Visual Studio ホスティングプロセスを有効にする
のチェックをはずす。デバッグなしでいけるならこれでどうよ。
これで駄目ならセキュリティとかゾーンの設定見直してとしか
いえん

894:デフォルトの名無しさん
09/03/23 21:12:13
>>893
ホスティングプロセスのチェックを外したところうまく動きました。
現在のところホストプロセスを無効にしても、あまり問題はないようなのでこれでいこうと思います。
ありがとうございました。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5377日前に更新/228 KB
担当:undef