[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 03/08 23:54 / Filesize : 48 KB / Number-of Response : 175
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC♯, C#(初心者用) Part14



1 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 20:39:06 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

29 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:52:13 ]
前スレ埋まってないから
質問はこちらで。

ふらっとC♯, C#(初心者用) Part13
pc11.2ch.net/test/read.cgi/tech/1170761729/

30 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:54:27 ]
>>27
Part13のほうでエスパー回答しといたから。

31 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 14:00:25 ]
>>21
IntPtr アドレス
Int 整数

32 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:37:59 ]
>>30
ありがとうございます。
あちらのほうに返事をしておきました。

33 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:19:32 ]
BitBltについて教えてください
pictureBox1に画像を読み込みForm1にコピーして表示するプログラムです
以下1部省略したその部分です

class USER32 {}
class GDI32
{
public const int SRCCOPY = 0xcc0020;
[DllImport("gdi32.dll")]
public static extern bool BitBlt(IntPtr hdcDst, int xDst, int yDst, int width, int height, IntPtr hdcSrc, int xSrc, int ySrc, int rasterOp);
}

protected override void OnPaint(PaintEventArgs e)
{
pictureBox1.Image = Image.FromFile("C:/test.jpg");
Graphics grfx = e.Graphics;
Graphics g = Graphics.FromImage(pictureBox1.Image);
IntPtr dstHDC = grfx.GetHdc();
IntPtr srcHDC = g.GetHdc();

GDI32.BitBlt(dstHDC, 0, 0, 320, 240,srcHDC, 0, 0,GDI32.SRCCOPY);
grfx.ReleaseHdc(dstHDC);
g.ReleaseHdc(srcHDC);
pictureBox1.Visible = false;
}

BitBltがうまくいかず黒地だけのコピーになってしまいます
ためしにForm1からForm1へのBitBltやるとちゃんと機能していました
pictureBox1のアクセスが出来ていないようです(線などは描けます)
何か足りないのでしょうか?


34 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:34:32 ]
pictureBox1 じゃなくて pictureBox1.Image だろ
SelectObject で srcHDC にコピー元のビットマップを選択してやらにゃならん
……つか PictureBox 使う意味あるのか?

35 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:48:53 ]
>>34
アホなんだから黙ってた方がいいと思うよお前さん。
トンチンカンなこと言っちゃってw

純粋にプログラム的に言えば>>33はどこもおかしくないと思うよ。
いや、BitBltの返り値がboolなのはちょっと違うと思うけど。。

36 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:51:48 ]
回答する前に試しもしない奴に言われたくはないが……。

37 名前:33 mailto:sage [2007/03/04(日) 19:02:51 ]
質問用にちょっとソース変えてあります
実際はOnPaintから呼んだ先で作業しているのですが

SelectObjectを具体的にどこにどんな風に入れるといいんでしょうか

boolなのはサンプルプログラムの引用なんですが 問題でしょうか?




38 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:06:25 ]
boolで全く問題ないよ

39 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:17:43 ]
おいおいw
Console.WriteLine(sizeof(bool));

Win32のBOOLはlongのエイリアスだから、対応するマネージ型はInt32かUint32
だと思いますよw

40 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:19:38 ]
void で全く問題ないよ

41 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:27:00 ]
DllImport の場合マーシャラは既定では bool を Win32 の BOOL に変換する。
だから何も問題ない。

42 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:29:43 ]
今度は引数と返り値の区別がつきませんか。
困った君ですねまったくw

43 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:43:01 ]
春だよなあ

44 名前:33 mailto:sage [2007/03/04(日) 19:43:49 ]
pictureBox1.ImageをBitmapにしてSelectObjectするといいんでしょうか


45 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:49:13 ]
SelectObject 関数は調べれば分かる
画像を選択するには HBITMAP を渡す必要があるわけだが、これは Image クラスの GetHbitmap メソッドで取得できる
使用後は SelectObject で元々選択されていたのを選択しなおして、取得した HBITMAP の方は DeleteObject

46 名前:33 mailto:sage [2007/03/04(日) 20:38:40 ]
C#では
SelectObjectは現在のコンテキスト内には存在しません
エラーが出てしまいます
いつでもいいのでどなたか
pictureBox1.ImageからForm1へのBitBltでのコピー成功例を示してもらえると嬉しいのですが


47 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:41:00 ]
>>39
それを言うならMarshal.SizeOfの値をみなくちゃいけないんじゃないの?

msdn2.microsoft.com/ja-jp/library/t2t3725f(VS.80).aspx
には規定で4バイトにマーシャリングしてくれるみたいだけど
>>42は何をいってるの?
後学のために教えてちょ。



48 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:11:40 ]
>>46
BitBltなんて多用してるけど、今までなにも問題出てないけどなあ。
主に裏画面(Bitmap)と実画面の間の相互の転送だけど。

SelectObjectの話はヨタだから真に受けちゃダメよw

49 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 23:41:13 ]
是非とも該当部分のコードを晒してくれ

50 名前:33 mailto:sage [2007/03/05(月) 00:32:21 ]
実行時にフォーム白地に赤で×が描かれエラーが出るようになってしまった
コンパイラが壊れてしまったのか
それともこれは何か特有の現象?


51 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:51:14 ]
描画メモリに不正アクセスしたっぽい挙動だなぁ

52 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:12:22 ]
e.Graphics を Dispose したとかそんなんじゃね?
ま、原因は幾らでも

53 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:19:22 ]
いやいや、>>50みたいな現象はフォームとかPictureBoxとかに描画するときに
描画メソッドで例外が発生するとそうなる。

例えばデバッグなしでこんなコード実行すると再現できるよ。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Point[] pts = { new Point(0, 0) };
e.Graphics.DrawLines(Pens.Black, pts);
}


54 名前:33 mailto:sage [2007/03/05(月) 02:28:20 ]
GDIはデリケートですね エラーは戻せたけど
なにかプロパティをいじらないといけないのかな


55 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:11:40 ]
そもそもどうしてBitBltでなければならないのかを説明しておくれ。

56 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:15:54 ]
e.Graphics.DrawImage() とか、this.BackgroundImage とかではだめなの?

57 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 08:12:12 ]
いや、33じゃなくてもBitBlt使いたい場面は少なくないはず。
だって該当する機能がGDI+にはないからね。
そういう問いかけはナンセンスだよ。

今日仕事終わったら33の言ってる問題が再現するか試してみようかな。



58 名前:33 mailto:sage [2007/03/05(月) 10:16:01 ]
BitBltしか知らなかったもんで

これですか
e.Graphics.DrawImage()

これはコピー元の座標指定ができないんですかね?


59 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 12:20:10 ]
できる。
Graphics.DrawImage()はやたらとオーバーロードが多いので、MSDNライブラリでよく確認して、適切なものを選んで。

なお、俺はOnPaint()で(というか、.NETコントロール全体を通して)BitBltを使うこと自体が間違ってると思うよ。

60 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 12:36:00 ]
>BitBltを使うこと自体が間違ってる
だからそんなことないって。
例えば描画サーフィスから画像をBitmapに転送することは
GDI+では実現できないんだから。

61 名前:13 mailto:sage [2007/03/05(月) 12:45:02 ]
>>14 >>15 >>25 >>26
DLLの設定を
-----
[DllImport("fdmpci.dll")]
extern static IntPtr fdmpciGetBuffer();
-----
とし,
Marshal.Copy(fdmpciGetBuffer(), bufArray, 0, BMP_WIDTH * BMP_HEIGHT * 3 * 2);
といった感じで一度bufArray(マネージド)にコピー,
bufArrayは2ch分混在してるので,これを1ch分だけ取り出しbmpArrayとした後,
Marshal.Copy(bmpArray, 0, bmp_data.Scan0, BMP_WIDTH * BMP_HEIGHT * 3);
とすることで解決いたしました.(*3はRGB分)

エスパーの皆さん,ありがとうございました.

62 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 17:11:45 ]
>>61
fdmpciGetBuffer()でとったバッファはこっちで解放しなくていい仕様なの?


63 名前:33 mailto:sage [2007/03/05(月) 20:45:10 ]
BitBltを使わないほうが良いというのは.NETの中に全て収めた方が良いということでしょうか
BitBltでは意味不明のところで例の赤×エラーが多発してお手上げ状態になります
e.Graphics.DrawImageとBitmapを使ってやってみました(速さはどうなのか分かりませんが)
ウインドウが隠れても絵が消えないこと
表画面から裏画面への逆コピーが出来ること
裏画面の座標指定が出来ること
表示画面のセーブが出来ること
これらの条件を満たせるようにしました どうでしょうか?


64 名前:33 mailto:sage [2007/03/05(月) 20:46:14 ]
int d1,x1,y1;
Bitmap _bmp = new Bitmap(300, 300); //表面
Bitmap _bmp2 = new Bitmap(@"C:/test.jpg"); //裏面
Rectangle srcRect = new Rectangle(0, 0, 300, 300);
GraphicsUnit units = GraphicsUnit.Pixel;
protected override void OnPaint(PaintEventArgs e)
{
if (d1 == 0) init();
x1 = 0;
y1 = 0;
srcRect.X = 0;
srcRect.Y = 0;
srcRect.Width = 300;
srcRect.Height = 300;
//常に表面を表示
e.Graphics.DrawImage(_bmp, x1, y1, srcRect, units);
}
private void init()
{
//ここは最初に1度だけやることを書く
//試しに裏の横50から100切り取って表へコピー
Graphics g = Graphics.FromImage(_bmp);
x1 = 0; //表X座標
y1 = 0; //表Y座標
srcRect.X = 50; //裏X座標
srcRect.Y = 0; //裏Y座標
srcRect.Width = 100; //転送X幅
srcRect.Height = 300; //転送Y幅
g.DrawImage(_bmp2, 0, 0, srcRect, units);
g.Dispose();
d1 = 1;
}

65 名前:33 mailto:sage [2007/03/05(月) 20:50:01 ]
インデント失敗^^

66 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:01:06 ]
どうでしょうか、って言われても
知らんがな、としか答えようがないのでは。。。

67 名前:33 mailto:sage [2007/03/05(月) 21:14:28 ]
一応画像のやり方のコツはつかみました
教えてくれた方々 どうもありがとう。



68 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:48:03 ]
どうでしょう、っていうか、とりあえずbase.OnPaint()を呼んでないのはよくない。

69 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:51:03 ]
>>64 のコードって、コンストラクタで

Init();
BackgoundImage = _bmp;

とやれば、OnPaint()を使う必要ないんじゃね。

70 名前:33 mailto:sage [2007/03/05(月) 22:06:23 ]
そうですか
もっと調べてみます


71 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:45:55 ]
http プロトコルで配布されているzipファイルの
日付だけを取得することはできますか?

今は、手動でダウンロードしているんですが、
更新されていたら自動でダウンロードする機能を
つけたいもので。


72 名前:13 mailto:sage [2007/03/06(火) 14:36:19 ]
>>62
サンプルソース&仕様書を読む限りでは
fdmpciSingleCapture()
でキャプチャー後,
fdmpciGetBuffer()
で得られたアドレスからデータを読み出すだけでokなようです.
(キャプチャーボードへの接続開始,終了時はそれぞれInit,Exitという処理がありますが)

73 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 14:56:58 ]
WebClient.DownloadFileAsync 内で WebException が発生しているようなのですが、

try{
 WebClient.DownloadFileAsync(...);
}catch(WebException){
 ....
}

と書いても catch できません。DownloadFileAsync 内で発生した例外を catch する
にはどう書いたらよいのでしょうか?

74 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 20:24:34 ]
>>71
HTTP の仕様、If-Modified-Since を調べなさい

75 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 21:10:54 ]
つうか HEAD でいいじゃん

76 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 22:46:59 ]
返してくれるかどうかは相手の鯖次第だけどな

77 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 22:57:39 ]
>>73
確認してないが、DownloadFileCompleted のイベント引数に入ってないか?



78 名前:73 mailto:sage [2007/03/06(火) 23:13:32 ]
>>77
ばっちりでした。
ありがとうございました。

79 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 23:20:37 ]
さっき C# 触ったばかりですが質問ください

int i = 1;
string s = (string) i ;

と、これでは整数型を文字列型にキャストできないようなのですが、
どうすればできるでしょうか

80 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 23:23:02 ]
string s = i.ToString();

81 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 23:55:19 ]
>>80 ありがとうございます できました!

ところで、いま VC# 2005 無償版を触っていますが、
プロシージャ(?)を作った際に、 { } は自動で補完してくれないのものなのでしょうかどうでしょうか

82 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:04:58 ]
そんなん補完されても全く嬉しくないな

83 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:05:00 ]
してくれないものです

84 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:32:10 ]
プロシージャて呼ぶのは何やってる人だろう・・・

85 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:42:26 ]
>>84
元コボラーもしくはDB/SQLべったりな人とかはそういう呼び方しそう。

86 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:51:25 ]
VBじゃないの?

87 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:53:56 ]
VBだったらEnd SubなりEnd Functionが補完されるのに、ってことか。



88 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:55:18 ]
>>86
ん? VBでプロシージャなんて呼称でてきたっけ?

89 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:04:16 ]
パルカルあたりが起源の言葉だと思うけど、Cの文化でもプロシージャっていうでしょ。
WndProcのProcじゃん。

90 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:10:28 ]
>>89
パスカルは知らんけど、Cの用語/文化ではプロシージャってのは聞かんぞ。
そりゃWndProcみたいな一部の関数名としては聞くけど。

91 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:15:44 ]
>>89
あぁパスカルか。思い出した。d

92 名前:デフォルトの名無しさん [2007/03/07(水) 01:30:13 ]
CellValidatingについて教えてください
DataGridViewにて同一行に移動した場合はCellValidatingイベントを
発生させたくないのですが、まったくわかりません。

バカな質問かもしてませんが どなたかおねがいします

93 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:40:37 ]
RowValidating でいいんじゃね?

94 名前:デフォルトの名無しさん [2007/03/07(水) 01:53:21 ]
うわ〜〜
RowValidatingてのがあるんだ
本当にありがとうございます

もっと勉強します

95 名前:デフォルトの名無しさん [2007/03/07(水) 07:44:17 ]
XMLDataSourceを使ってGridViewにバインドしたいと考えており
以下の単純なXMLファイルを作成したところ問題なくGridViewにバインドされます。
<ファイル管理>
<ファイル ID="A" ファイル名="AAAファイル" />
<ファイル ID="B" ファイル名="BBBファイル" />
<ファイル ID="C" ファイル名="CCCファイル" />
</ファイル管理>
このXMLファイルには他の定義も必要になるため、もう1階層要素を追加しました。
<どっとねっと>
<ファイル管理>
<ファイル ID="A" ファイル名="AAAファイル" />
<ファイル ID="B" ファイル名="BBBファイル" />
<ファイル ID="C" ファイル名="CCCファイル" />
</ファイル管理>
<別の階層>
<システム ID="AAA" />
<システム ID="BBB" />
<システム ID="CCC" />
</別の階層>
今回必要なのはファイル管理以下の一覧なのでXPath式を
/どっとねっと/ファイル管理
としたところ画面には何も表示されなくなりました。
どのようにしてファイル管理以下の一覧を取得するのでしょうか?
プログラムでDataGridにバインドする前にXMLデータの加工をしてしまえば
できると思うのですが、デザイナ画面で実装イメージが確認したいので
そのようにしたくはありません。


96 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 07:56:59 ]
pc11.2ch.net/test/read.cgi/tech/1173061176/22

97 名前:デフォルトの名無しさん [2007/03/07(水) 13:04:54 ]
コンパイルした後の、最適化されたソースを見ることはできますか?
どこかのページで見たような気がするのですが。。



98 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 13:10:48 ]
コンパイルとはCILへのコンパイルのことかJITコンパイルなのか。
前者ならildasmか.NET Reflector、後者ならそのへんのデバッガで

99 名前:デフォルトの名無しさん [2007/03/07(水) 15:02:59 ]
VS2005にてビルドを行った時に、中間言語みたいなものを見ることができなかったかなぁと。
よく、解説サイトなんかで、volatileを使った時の結果を見てみましょう
みたいな感じで、volatileをつけたときとつけない時の比較を行ったりしている時に
表示しているコードみたいな。。
VS2005、アセンブリにする直前のソースを表示させる事なんかができないのかなぁと。
無ければ.net reflectorを使ってみます。
ありがとうございます。

100 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 15:09:03 ]
ILならildasmで見れるだろ

101 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 15:32:11 ]
おぅ。なるほど〜
.net reflectorに目がいってますた
ありがとうございます。

102 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:53:55 ]
DropDownStyle=DropDownList な ComboBox を作りました。

このコンボボックスの状態を ApplicationSetting 保存しようと、
(ApplicationSettings).(PropertyBinding)にTextを設定しましたが、
無視されました。

DropDownList でどの項目が選択状態にあるか保存するには
(ApplicationSettings).(PropertyBinding)になにを指定すれば
よいのでしょうか?

103 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:39:28 ]
>>29
読んでね。

104 名前:デフォルトの名無しさん [2007/03/09(金) 18:44:43 ]
前スレ埋まったのでage

105 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:40:36 ]
↓同意。


1000 名前:デフォルトの名無しさん[sage] 投稿日:2007/03/09(金) 18:44:10
マ板でやれ


106 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:59:20 ]
お客さんはこちらへ…

コーディングトラブルの約70%はif文などでの{}省略
pc11.2ch.net/test/read.cgi/tech/1173416521/

107 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 20:03:26 ]
  __________   __   ______   _____     ___ ___    ___
 /              /  /  /   |        /   /__  __/ [][] _| |_| |__ _| |_
/_______   /__/  /_  | ____/      / /     |    _  | |_  レ'~ ̄|
          / / /__   _/ / /____      |  |___      ̄|  | / / /   /| |
         / /     /   |   /   __  /      \__|     |  |  ̄ /_  /  | |_
/ \    / /      /    |  /   |  /  /                 |_|     |__|   \/
.\  \/ /     / / /|_| / /|  | /  /
  \   /      \// /   / / \ V /            We are The Real Programmers
    \  \        / /   / /  /   \               pc11.2ch.net/prog/
     \/        /_/   /_/ ∠_/\_\




108 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 23:22:24 ]
マ板でやれというのももっともなので最後にしますが
>>前スレ997
おまえさん独善的杉。妄想力が豊かなのは結構だが、脳内ソースで人を非難するのはやめてね。

109 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:00:33 ]
まだ春休みなのか・・・

110 名前:デフォルトの名無しさん [2007/03/10(土) 16:42:48 ]
C#で書かれたPNGもしくはJPEGのプログレッシブ表示に対応したコントロールありませんか?
あったら教えてください。

プログレッシブ表示のアルゴリズムを知りたいのですが。

111 名前:デフォルトの名無しさん [2007/03/10(土) 16:48:11 ]
それならC#である必要ないだろ

112 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:31:28 ]
>>111
初心者なんで他の言語よめないんです。

113 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:36:34 ]
Javaで書かれたのならあるだろ
ほとんどC#と変わらない

114 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 18:28:28 ]
マ板とかム板とか!
どっちも同じプ板じゃないか!!

115 名前:デフォルトの名無しさん [2007/03/10(土) 18:49:32 ]
>>113
見つけられません

116 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 09:49:00 ]
プロジェクトを新規作成するときに、「ソリューションのディレクトリを作成」にチェックを入れなかった場合、
あとから、「ソリューションのディレクトリを作成」にチェックを入れたのと同じ状態(フォルダ構成とか、
exeファイルの出力先とか)にするにはどうしたらよいでしょうか?

117 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:12:26 ]
ディレクトリとソリューションファイルなどを再配置し、プロジェクト出力先を変更するだけじゃないのかな?



118 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:48:58 ]
Hoge.slnファイルを削除してそのプロジェクトのフォルダを任意の位置に移動して
ほかのソリューションにHoge.csprojを追加するだけ

119 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:05:29 ]
 Bitmap bmp = (Bitmap)Clipboard.GateDataObject().GetData(typeof(System.Drawing.Bitmap));
 dataGridView[col, row].Value = bmp;
↑こんな感じで、クリップボードから読み込んで、DataGridView 経由で
データベースに画像を登録しました。

 CellToolTipTextNeeded を使って画像のバイト数と画像のサイズ(横ドットx縦ドット)を表示したいんですが、
画像のバイト数とサイズはどうやって取得すればいいんでしょうか?

120 名前:デフォルトの名無しさん [2007/03/11(日) 15:15:45 ]
>>119
1) bmp.Width * bmp.Height * Image.GetPixelFormatSize(bmp.PixelFormat) / 8 (ビットマップ部分の情報量)
  ファイルに保存した場合の大きさが欲しければストリームにSaveして長さを見る。
2) Bitmap.Size or (Bitmap.Width, Bitmap.Height)

121 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:17:29 ]
何かデータベースと関係があるのか?
Bitmap 型なら Width/Height と PixelFormat/GetPixelFormatSize 使えばいいだろ。

122 名前:119 mailto:sage [2007/03/11(日) 15:44:16 ]
>>119 で書いた方法でデータベースに保存したのですが、
Bitmap bmp = dataGridView[col, row].Value as Bitmap;
としても、bmp が null になってしまいました。
そこで、Bitmap を取り出す方法はあきらめて、サイズの取得
方法を質問したわけですが、結局 Bitmap を取り出さなければ
いけないようです。

private void t_FILEDataGridView_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
 if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; }
  DataGridViewImageCell cell = t_FILEDataGridView[e.ColumnIndex, e.RowIndex] as DataGridViewImageCell;
  if (cell != null)
  {
    Bitmap bmp = t_FILEDataGridView[e.ColumnIndex, e.RowIndex].Value as Bitmap;
    if (bmp != null)
    「






123 名前:119 mailto:sage [2007/03/11(日) 15:46:35 ]
すいません、編集中に誤って書き込んでしまいました。
コードは上記の通りなんですが、
bmp が null になってしまうんですが、なんで null に
なってしまうのでしょうか?

124 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:06:53 ]
データベースには Bitmap 型なんて存在しないから。
直接画像ファイルのバイトイメージが入ってるんじゃなかったっけ。

125 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:39:54 ]
MySQLだとblob型ってバイナリ格納用があるが
PHPでそこに入れる場合、mysql_real_escape_string()を
通さないといけないらしい
俺じゃ答えらんないから
そういうこともあるってことで参考までに

126 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:41:38 ]
PHPのPDOでない関数は直接文字列としてクエリを送るからescapeする必要がある。BLOBでもTEXTでも。
しかしこの場合は自動でデータバインディングされるような。

127 名前:119 mailto:sage [2007/03/11(日) 18:22:20 ]
データベースの環境書いてなかったですね。
SQL Server 2005 Express Edition で、Bitmap を保存している
フィールドは varbinary(MAX) です。

dataGridView[col, row].Value = bmp;

で保存して、grid 上は表示されているのに、

bmp = dataGridView[col, row].Value as Bitmap;

が null になってしまうのがなぜなんだろう〜って感じです。



128 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 18:32:03 ]
DataGridViewImageCell が頑張ってるからに決まってる

129 名前:119 mailto:sage [2007/03/11(日) 18:45:04 ]
自己解決したのでご報告を。

byte[] bytes = dataGridView[col, row].Value as byte[];
とした後、 bytes から MemoryStream をつくって、
Bitmap.FromStream() としたら、読めました。

レスをくれた皆様、ありがとうございました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<48KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef