[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/09 19:51 / Filesize : 230 KB / Number-of Response : 995
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



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

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

620 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:37:41 ]
同期のためか。
もう>>608みたいな書き方するときはパフォーマンスなんて気にするな、
ってことかな。

621 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:05:59 ]
>>617
うまく計算してWPFの3D機能でやるとか
ピクセルロックして頑張るとか

622 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:46:20 ]
初歩の初歩だとは思うのですが
ラベルやテキストボックスの文字列をセンターでそろえるというのはどうすればいいのでしょうか?
ググってもなにやらコードを書く必要があるような記述ばかりなんですが、プログラムから制御を
行わないとできないのでしょうか?

623 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:53:38 ]
VS使えばいいと思うよ

624 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 01:41:41 ]
へたな本読みながら一つずつ機能を知っていくより
Visual C# Express Editionと、それと一緒に入ってくるMSDNドキュメント
見ながら遊んでる方がずっとコントロール廻りは理解できるよ

625 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 01:49:40 ]
VS6.0からVS2008に移った俺はMSDNの進化に感動した

626 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 02:20:44 ]
>>622
フォームデザイナ上で、
複数コントロールを選択した状態で
ツールバー>書式>整列

最初に選択したコントロールを基準に整列してくれる。

627 名前:デフォルトの名無しさん [2008/01/28(月) 17:57:40 ]
2001のMSDNはウンコだったが2005あたりからようやくマシになった

628 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:06:23 ]
>>627
通信回線が発達してオンラインがまともに使えるようになってから
かなり使えるようになったと感じる




629 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:16:14 ]
いやローカルにインストールするライブラリのこと>>625は言ってるんだと思いますが。。

630 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:19:36 ]
オンラインなんてレスポンスが悪すぎて使ってられない

631 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:52:21 ]
おまけにブックマークしといても数ヶ月でリンク切れになるしねw

632 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:17:42 ]
MSは何故C#の匿名メソッドをレキシカルクロージャーにしなかったの?
理由分かる人いたら教えて。

633 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 06:54:59 ]
プログラマが選択できるようにしてあるし

634 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 09:54:01 ]
VC#であるプログラムを作っていて、アイコンを埋め込みたいと思いました。
そこから少し話は反れて飛びます

ソリューショネクスプローラのResources以下にicoファイルを入れ
Form.Icon = ((System.Drawing.Icon)(resources.GetObject("アイコンファイル名")));
↑このようにするとアイコンをセット出来るのではという結論に至りました

しかしコンパイルは通るもののデバッグになるとこの記述の部分でエラーが出ます

'System.Resources.MissingManifestResourceException' のハンドルされていない例外が mscorlib.dll で発生しました。

エラーはこの通りです
見たところ、アイコンファイル自体みつけられてないのか・・?と思いましたがアイコンファイル名はいくら確認しても正しいです
何が間違っているのでしょうか?


635 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 10:12:26 ]
ああ、大間違いだよ

636 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 15:24:23 ]
違うよー

637 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:12:32 ]
よく覚えてないけどソリューションエクスプローラにぶちこんだら相対指定で使えるだろうに

638 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:38:20 ]
System.Collections.Generic.List#Add が

  System.ArgumentOutOfRangeException: 容量が現在のサイズより小さい値です。

なんて投げてくるんですが、これって .NET Framework のバグですか?



639 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:41:24 ]
あーごめん。3秒で疑問が氷解。複数スレッドが一度に Add しようとしてました。すみません。

640 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:49:24 ]
>.NET Framework のバグですか?

これって見る度ネタなのかどうか理解に困る

641 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:56:09 ]
大抵はそれを本気で言ってるし言う奴は低レベルと相場が決まってる

642 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:01:58 ]
いや、今日初めて言ってみて、初めて言う輩の気分がわかったwwww
マルチスレッド関係はやっぱ鬼門だわ……

643 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:19:57 ]
画像処理関連で質問です。
1600*1200のbmp1があり、そのbmpの指定した座標(x,y)を支点として、
300*300のbmp2を重ねたいのですがどのようにすればいいのでしょうか。

Bitmap bmp1 = new Bitmap(filename1);
Bitmap bmp2 = new Bitmap(filename2);
bmp1.Add(x,y,bmp2);

のような感じでできないのでしょうか?
BitmapクラスとImageクラスのメンバをオブジェクトブラウザで眺めてみましたが、
そのようなメソッドを見つけることができませんでした。
GetPixelしてSetPixelするという操作を全量に対して行うしかないですか?

644 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:23:14 ]
>GetPixelしてSetPixelするという操作を全量に対して行うしかないですか?
それでもいいし
bmp1のGraphicsを取得してそれでbmp2をDrawImageしてもいいよ

645 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:48:46 ]
そしてIndexedなBitmapという落ち

646 名前:643 mailto:sage [2008/01/29(火) 18:56:08 ]
>>644
ありがとうございます。
追記になりますが、その画像をjpegで保存したいと思っています。
描画にGraphicsクラスを使ったことはありますが、描画した画像を保存したことがありません。

DrawImageして出来上がったGraphicsクラスのインスタンスを使って
画像保存をすることはできますか?

647 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:01:30 ]
>>646
Image.Save

648 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:19:09 ]
>>647
は?



649 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:51:18 ]
は?じゃないが

650 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:57:34 ]
>>648
知らないならレスすんな

651 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:20:33 ]
Graphicsクラスのインスタンスでは出来ないが、Graphicsには描画対象となるImageなりなんなりが必ずあるので、そっちの機能で保存すればOK

652 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:41:01 ]
pictureboxより大きい画像を表示したばあい、スクロールバーを自動で表示したいけど無理ですか?

653 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:42:04 ]
Panelに入れればいいだろ

654 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:19:46 ]
kami

655 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:47:31 ]
どーんと行こうや

656 名前:デフォルトの名無しさん [2008/01/30(水) 10:13:51 ]
こんにちは

ToolStripMenuItemのAllowDropをtrueにしてもOnDragEnterのイベントがきません

MenuTripだと正常にイベントがきます

何かご存知な方がいましたら
教えて頂けると助かります。

よろしくお願いいたします。

657 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:22:37 ]
自分でイベント追加したら?

658 名前:656 [2008/01/30(水) 13:52:55 ]
デリケートでイベントを追加しましたが
うまくいきません

開発環境はvs2005、vistaです



659 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:09:18 ]
似たような質問どっかで見たな。ここか前スレだったかなー

660 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:07:19 ]
前スレ945ぐらいかな


661 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:43:09 ]
ユーザーコントロール作ってみた
で、完成度が高くなったので
コントロールライブラリにしようと思ってDLL作ったんだが
このDLLの使い方がわからない漏れはどうしたらいいですか?

662 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:06:19 ]
完成度低いから心配いらないよ

663 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:50:37 ]
我々の社会って連呼かよ
中国って何回言った? 死ねや

664 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:51:01 ]
誤爆スマソ

665 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:00:37 ]
プログラマにもネトウヨ君っているんだね
まあ近頃は一口にプログラっていっても知的水準はいろいろだからなw

666 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:05:35 ]
プログラマ(笑

667 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:10:34 ]
>>665
>>663をネトウヨって言ってる時点でチョンか学生だな

668 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:19:22 ]
うんチョンで学生でいいよ別に。
で「チョン」って何ですか?
ネトウヨ君の仲間うちで通じる「ヲタ用語」みたいなもの?w



669 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:26:07 ]
他所でやれ

670 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:30:06 ]
PGはリベラル派が多いんだろうな。

671 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:39:32 ]
「PG」だと微妙かもなw

672 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:42:32 ]
>>665は例の餃子たべちゃったんだよ。
そっとしといてやろう……( -人-)

673 名前:デフォルトの名無しさん [2008/01/30(水) 22:12:15 ]
餃子とか右翼の話は他でやれよ
スレタイ読めないバカども

674 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:36:36 ]
フォームの位置とか状態(最大化、最小化とか)を次回起動時に復元しようと
プロパティのApplicationSettingsからLocation, ClientSize, WindowStateを保存するようにしたんだが
なんか挙動がおかしい。
最大化ボタン押しても最大化しなくて何故か位置が変わったり。
なんでだろう。

675 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:46:31 ]
なんでだろうね。

676 名前:656 mailto:sage [2008/01/31(木) 02:04:44 ]
前スレ945とは症状が違うようです。
ファイルのドラッグ&ドロップなら私の環境でも問題ありません。

Googleで探してますが、なかなかヒントが見つかりません。

677 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 08:20:44 ]
TreeViewの中身を保存しようとしています。
TreeView.Nodes[0]をBinaryFormatter.Serializeで保存し、
読み込みはBinaryFormatter.Deserializeした結果をTreeView.Nodes.Addすることで一応実現できました。
ただこの方法だとツリーの展開状態と選択状態が復帰できません。

現時点ではTreeNodeと下のクラスが混在しているのですが、
TreeNode自体ではなく、TreeNodeから派生させたクラスを使うようにして
そのクラスのDeserializeで展開状態とかを一旦内部フィールドに保存して、
TreeViewに追加した後に復帰させるしかないかなと思っているのですが
もっと良い方法があるのでしょうか?

[Serializable]
public class TVKeyword : TreeNode
{
  public TVKeyword() : base() {
  }
  protected TVKeyword(SerializationInfo serializationInfo, StreamingContext context) : base(serializationInfo, context) { }

  protected override void Deserialize(SerializationInfo serializationInfo, StreamingContext context) {
    base.Deserialize(serializationInfo, context);
    Keyword = serializationInfo.GetString("Keyword");
  }

  protected override void Serialize(SerializationInfo si, StreamingContext context) {
    base.Serialize(si, context);
    si.AddValue("Keyword", Keyword);
  }

  public string Keyword { get; set; }
}

678 名前:677 mailto:sage [2008/01/31(木) 09:06:37 ]
保存されたファイルを眺めていたら、
どうやら展開状態はそもそもシリアライズされていないように見えます。
派生クラスを作ることにしました。失礼しました。



679 名前:643 mailto:sage [2008/01/31(木) 10:26:47 ]
>>647-651

ここの回答者はOOPというものが全く分かっていないのか?
Graphicsクラスのインスタンスを使わないで、どうやってGraphicsクラスの
インスタンスメソッド(DrawImage)で描画しようとしているオブジェクトを保存するんだ?

>Graphicsクラスのインスタンスでは出来ないが、
>Graphicsには描画対象となるImageなりなんなりが必ずあるので、
>そっちの機能で保存すればOK

実際にコーディングしてみましたか?
どう考えても、Graphicsオブジェクトを作成するときに使っただけのImageオブジェクトが、
インスタンスメソッドであるDrawImageによって変更されているはずがない。
DrawImageの引数にImageオブジェクトが参照渡しで渡されているのならば別だがね。

だからこそ>>643のように質問しているわけなのだが。

てっきりGraphicsオブジェクトがメモリ上に保持しているGDIビットマップオブジェクトのハンドルを
取得して云々とかそういうアドバイスがくると思っていたのに、見当違いな回答しかこない。
挙げ句の果てに>>650のようなアホまで出る始末。分かってないのはどっちだと・・・

680 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:40:53 ]
>>643みたいなアホな質問してる割には偉そうだなw

681 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:47:10 ]
>>680

>>643の質問が低レベルなのは十分承知の上だよ。
でもそれにたいする回答者が見当違いのアホ回答をしてきたからこそ噛みついているわけで。
少なくともあいつらよりは分かっているつもりだが。

もしもGraphicsクラスを使わずに、かつImageオブジェクトで泥臭い全量ループすることなしに、
他のアプローチでもっと簡単に実現できる方法があるのであれば、是非ご教授願いたい。

682 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:55:08 ]
>>679,681
心底意味が分からん。
ベースとなるBmp1から作ったGraphicsを使ってBmp2をDrawImageするだけじゃん。

683 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:57:17 ]
何をぶち切れてるのか知らないけど、下のコードでtest.jpgは黒く塗り潰されたよ。
ImageもGraphicsも触ったのは初めてだけど、MSDNライブラリ見てったらすぐにサンプル見つかったよ。
Graphicsクラスの概要に「イメージ、ビットマップ、アイコン、およびメタファイルの操作」ってリンクがあるから
そこの「方法 : 実行時にビットマップを作成する

Image imageFile = Image.FromFile("sample.jpg");
Graphics newGraphics = Graphics.FromImage(imageFile);
newGraphics.FillRectangle(new SolidBrush(Color.Black), 100, 50, 100, 100);
newGraphics.Dispose();
imageFile.Save("test.jpg");


IDない板だし「は?」とかだけじゃ誰が何を言いたいのかさっぱりわからない。
はたから見てるとどういうやりとりなのか全くわからなかったから、スルーしてたんだよ。

ちゃんと誰で何を言いたいのかわかるようにしてたら、とっくに解決してたと思うけどね。

684 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:57:55 ]
>>681
>>643の質問内容より十分理解できる回答を見当違いといっている時点で、低脳杉。

685 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:00:16 ]
>>679
>>681
>どう考えても、Graphicsオブジェクトを作成するときに使っただけのImageオブジェクトが、
>インスタンスメソッドであるDrawImageによって変更されているはずがない。

何に怒ってるのかわけ分からん。

>>682
>ベースとなるBmp1から作ったGraphicsを使ってBmp2をDrawImageするだけじゃん。

だな。

Bitmap bmp1 = new Bitmap(filename1);
Bitmap bmp2 = new Bitmap(filename2);

using (Graphics g = Graphics.FromImage(bmp1))
{
  g.DrawImage(bmp2, x, y);
}

これでbmp1の中身が変更されるはず。
bmp1.Save("check.bmp");
あたりで確認できるかな。

686 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:16:39 ]
まあ今から棒グラフみたいなものを書きたかった、描画知識0の俺には
ちょうどいい話題だったぜ。

687 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:27:55 ]
ごめんなさいはマダー? (・∀・ ) っノシ凵 ⌒☆チンチン

688 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:30:33 ]
質問がネタに見えて仕方が無い。質問主はこれ試してみろ。
>>683>>685Save()メソッドはデフォルト.png保存じゃなかったっけな?


using System.Drawing;
using System.Drawing.Imaging;

class Hoge{
static void Main(){
Image img1 = Image.FromFile("1.jpg");
Image img2 = Image.FromFile("2.jpg");
Graphics g = Graphics.FromImage(img1);

g.DrawImage(img2,100,100,200,200);

img1.Save("hoge.jpg",ImageFormat.Jpeg);
}
}



689 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:49:22 ]
お前らの優しさは南半球まで響き渡るわ。

690 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:22:41 ]
>>681
>Graphicsクラスを使わずに
なんか初め>>643から新しく条件加わってるけど、何でGraphicsクラス使ったらいけないんだ?
Graphicsクラスでやりたいことが楽にできるのに、わざわざ自分で新しく作る必要ないだろ?

691 名前:651 mailto:sage [2008/01/31(木) 12:24:16 ]
>>643
だからよう、Graphicsクラス自体は描画機能を持っているだけで、描画対象は別に必要なんだよ。
だから、描画対象となるオブジェクトを指定せずにGraphicsクラスのインスタンスを作成出来ないようになってるわけ。
Graphicsクラスのインスタンスメソッドを使用して実際に変更されるのは描画対象オブジェクトのほう。

>>688
指定した拡張子に対応するImageEncoderがあれば、自動的にその形式で保存されるはず。

692 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:32:02 ]
>>679
こっちはコード書いたことあるからわかってんだよ
それで動かないってどんな糞コード書いたんだよ
晒してみろよ
アホすぎて生きてる価値ないんじゃね

693 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:36:48 ]
なるほど、このスレでは横柄な態度で質問したほうが答えが付きやすいってことだな

694 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:38:33 ]
>>681
> もしもGraphicsクラスを使わずに、かつImageオブジェクトで泥臭い全量ループすることなしに、 
> 他のアプローチでもっと簡単に実現できる方法があるのであれば、是非ご教授願いたい。
bitmap

695 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:41:13 ]
>>643にたいして>>644で答えが出ているというところが恐ろしい

696 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:42:27 ]
横レスだけど正直>>643の切れ方は意味がわからないな。
いきなり「オブジェクト指向が〜」とかキレてるのよんでリアルでコーヒー吹いちゃったよw

というか、適当にレスを拾い読みした感じでは、>>643はWinの描画の考え方っていうか
デバイスコンテキストって概念を知らないんだと思う。

まあ最近の.NET用の入門書はこのあたり解説してないのが多いと思うから無理もない。

697 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:45:06 ]
たぶんさ、PC-98時代のビットマップスクリーンと同じ発想で
Winのグラフィックも考えてるんだろうね。
だとしたら結構年長のオジサマなんだと思うよw

698 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:47:58 ]
いやこれどうみてもガキだろ



699 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:54:09 ]
>>679の一番痛いところは
> Graphicsクラスのインスタンスを使わないで、どうやってGraphicsクラスの 
> インスタンスメソッド(DrawImage)で描画しようとしているオブジェクトを保存するんだ?
ここ
描写しようとしているオブジェクトは Graphicsクラスのインスタンス となんら関係がない
勝手に持ってろって話

700 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:57:59 ]
ここまで能無しだと釣りに思えるんだが・・・
本気でこんな事言う人間が居るのか?

701 名前:643 mailto:sage [2008/01/31(木) 13:16:43 ]
ごめんなさい

702 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:09:14 ]
それだけ?

703 名前:643 mailto:sage [2008/01/31(木) 15:53:11 ]
全面的に私が悪かったです。
これまでの暴言を心よりお詫び申し上げます。
何卒お許し下さい。

経緯及び結果を説明します。
>>617=>>643=>>646=>>648です

流れとしては、1600*1200の画像から台形補正をするために、
1600*1ずつ切り取っていって、それを目的の等脚台形にするために横にのばして
貼り付けていくという手法を試みたのです。

画像処理は初めてだったので、>>643の質問をしてみました。

Graphicsクラスを使って実現するためには、Graphicsクラスのメンバ変数にImageオブジェクトが
格納されていなければならないと思いこんでいました。←勘違い

実際は、
Graphics newG= Graphics.FromImage(img);
この引数で渡されたImageオブジェクトをGraphicsオブジェクトがPrivate変数で保持していて、
それに対して処理を行っているということなんですね。
だから引数で渡されたオブジェクトそのものが変更されると。
値型との区別が付いていなかったようです。←低脳

ということで、結果としてはやりたいことができました。
以下にコードを記します。


704 名前:643 mailto:sage [2008/01/31(木) 15:55:34 ]
using System.Drawing;
using System.Drawing.Imaging;

class Hoge
{
  static public void Main()
 {
   int newX = 3200;
   int newY = 3200;
   Image bmp = new Bitmap("input.jpg"); //画像読み込み[1600:1200]
   Image newbmp = new Bitmap(newX, newY); //編集後イメージ(等脚台形格納用)
   Image tmpbmp = new Bitmap(newX, bmp.Height); //編集作業用イメージ(台形格納用)

   RectangleF destRect = new RectangleF(0, 0, 0, 1);
   RectangleF srcRect = new RectangleF(0, 0, bmp.Width, 1);
   Graphics newG = Graphics.FromImage(newbmp);
   Graphics tmpG = Graphics.FromImage(bmp);
   Point[] pt = new[]
   {
    new Point(0, 0),
    new Point(newX, 0),
    new Point((newX + bmp.Width) / 2, newY)
   }; //等脚台形変換用平行四辺形の3頂点


//続く

705 名前:643 mailto:sage [2008/01/31(木) 16:02:49 ]
//続き


int tan = (newX - bmp.Width) / bmp.Height; //台形積分計算用

//台形作成用ループ
for (int i = 0; i <= bmp.Height; i++)
{
  srcRect.Y = i;
  destRect.Y = i;
  destRect.X = newX - i * tan;

  //tmpbmpに貼り付けていく
  tmpG.DrawImage(bmp, destRect, srcRect, GraphicsUnit.Pixel);
}

//tmpbmpの保存
tmpbmp.Save("tmp.jpg", ImageFormat.Jpeg);

//等脚台形に変換してnewbmpに格納
newG.DrawImage(tmpbmp, pt);

//jpgで保存
newbmp.Save("output.jpg", ImageFormat.Jpeg);

//終了処理
tmpG.Dispose();
newG.Dispose();
newbmp.Dispose();
tmpbmp.Dispose();
}
}

706 名前:643 mailto:sage [2008/01/31(木) 16:06:46 ]
補足ですが、この台形補正では逆透視変換は実現できませんでした。
こんな単純なアルゴリズムで実現できるはずがないということにもっと早く気づくべきでしたかね。

結局OpenCVの力を借りて実現する方法にしたいと思います。
Cの勉強しなくては・・・
.NET脳の私には頭が痛いです。

707 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:27:03 ]
     ,.――――-、
     ヽ / ̄ ̄ ̄`ヽ、        勇者トンファーパーマン惨状
      | |  (・)。(・)|
      | |@_,.--、_,>         俺が着たからにはもう色々と駄目だ
      ヽヽ___ノ          
        /:::::::::::::::::l   /77
       /::::::::::i:i:::::::i,../ / | 
       l:::/::::::::i:i:::、:::/ / |  
       l;;ノ:::::::::::::::l l;.,.,.!  |  
        /::::::::::::::::l/ /  冂 
       /:::::::;へ:::::::l~   |ヌ|
      /:::::/´  ヽ:::l   .|ヌ|  
      .〔:::::l     l:::l   凵
      ヽ;;;>     \;;>

いろいろつっこみたいけど、とりあえず
www.google.co.jp/search?num=20&hl=ja&rlz=1T4GGLJ_enJP208JP208&q=C%23+Graphics+Trapezoid&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja


708 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:47:03 ]
本当に初心者な質問で恐縮なのですが……

Windowsアプリ(VC#2005)で、XMLとCSVから読み込んだデータをDataGridViewに表示させようとしています。
そのときのバインド方法なのですが、下記の2パターンの差がわかりません。
BindingSourceのデータソースとして(DataTableではなく)DataViewを使用するメリットって何かありますか?

DataTable→DataView→BindingSource→DataGridView
DataTable→BindingSource→DataGridView



709 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:06:44 ]
DataTable.DefaultView以外のDataViewを使える

710 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:04:08 ]
C#でスタック関係の直接操作ってできますか?

711 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:05:41 ]
なんでスタックなんか弄りたいんだ?

712 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:17:07 ]
関数のカリー化を実装したいとか

713 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:17:58 ]
それならdelegateでいいだろ

714 名前:710 mailto:sage [2008/01/31(木) 18:22:59 ]
うまく説明できないのでまとめると
ウィルスチェックってどうなってるんだろう?
→全ファイル走査するにはどんなやり方がスマートなんだろう
→再帰処理を使って全部辿るのがベターらしい
→なんだか重くなる
(ここら辺から迷走気味)
→コールスタックとかを知る
→すたっくおーばーふろー・・?
(本格的に迷走)
→スタックを直接操作できればどうにかなるんじゃね?

こんな感じです
質問をするにもどう質問すればいいかわからず>>710のような具合で質問しました

715 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:29:04 ]
再帰処理をほぐす、すなわち、

再帰処理で、保存・復帰してる情報(今探索してるフォルダの情報)を、
インスタンス変数にリストか何かで保持するようにして、そのリストで、
保存したり取り出したりして、本体はループになるように書き直す、
というのがだいたい定番。

ファイルシステムの場合、親フォルダを ".." で探せることを利用すれば、
そういう面倒なことをしなくてもうまくいくかもしれない。

716 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:30:34 ]
吹いたw

とりあえず重くなる原因を確認したほうが良いよ

717 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:30:59 ]
再帰関数でローカルな変数が多すぎなら、
関数を何とかする手もある。

718 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:31:54 ]
そもそも再帰の脱出条件ミスってて、無限に掘ってるかもしれんなw



719 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:35:02 ]
>>715
つまり再帰処理を行う回数を最初に逆算しておくってこと、かな
ディレクトリの階層数があって更に木構造のように枝分かれしていくのを考えると
すごく大変そうですがちょっと調べつつがんばってみます・・・

>>716-718
しっかり終了はするんですが、時間が経つとだんだんと重たくなってきます
CPU使用率の方が、他アプリケーションをがんがん使うと結構きつくなったりするようです


720 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:36:50 ]
お前のパソコンはウィルス検索中に他アプリケーションがんがん使ったら重たくならないか・・?

うちのノートン先生は重たくなる






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

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

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