C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: stringからintへの変換


(過去ログ 52 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■29255 / inTopicNo.1)  stringからintへの変換
  
□投稿者/ kinta (1回)-(2008/12/06(Sat) 11:57:32)

分類:[C#] 

はじめましてこんにちは。早速なのですがform上でPictureBoxを2つ用いて、左には現画像、右にはボタンを押したときに
乱数を用いて拡大後の画像を表示したいと思っていますが下記のプログラムでなかなかうまくいきません。
型変換を幾つも試しましたが、それも有効な手段ではありませんでした。
何か、良い改善策等ございましたら是非お願いしたく思っております。

・乱数には細かく倍率が指定できるよう、浮動小数点で派生される乱数を使用。
・数値の取得には常に現画像から取得するように設定。
・乱数を使って拡大されると有効桁数が永遠に続くので第1位まで表示させるようにif文で調整
・その数をDrawを使って表示させたいがstring型をint型に変換できないとコンパイルエラーで終了。

private void button3_Click(object sender, System.EventArgs e)
		{
			
			Random cRandom = new System.Random(); //Randomクラス派生
			double dRandom = cRandom.NextDouble(); //0.0-1.0以下の乱数取得

			
			
			// 画像ファイルの読み込み
			Bitmap src = new Bitmap(pb1.Image);
			double Width = 0;
			double Height = 0;
			string w,r;

			//入力される値(Width)
			Width = Convert.ToDouble(pb1.Width * dRandom); //元画像のサイズに乱数倍
			w = Width.ToString("0.0");

			int a = w.IndexOf("."); //有効桁調整
			
			if(a == -1)
			{
				w += "0.0";
			}

			else
			{
				switch(w.Length - a)
				{
					case(2):
						w += "";
						break;
					case(3):
						w += "0";
						break;
				}
			}
			
			

			//入力される値(Height)
			Height = Convert.ToDouble(pb1.Height * dRandom);
			r = Height.ToString("0.0");

			int b = r.IndexOf(".");
			if(b == -1)
			{
				r += "0.0";
			}

			else
			{
				switch(r.Length - b)
				{
					case(2):
						r += "";
						break;
					case(3):
						r += "0";
						break;
				}
			}
			
			
			pb2.SizeMode = PictureBoxSizeMode.AutoSize;

			// 乱数で作成された横、縦のイメージを作成する
			Bitmap bmp = new Bitmap(pb2.Image,w,r);

			pb2.Image = bmp;
}
よろしくお願いします。

引用返信 編集キー/
■29256 / inTopicNo.2)  Re[1]: stringからintへの変換
□投稿者/ .SHO (315回)-(2008/12/06(Sat) 12:03:18)
No29255 (kinta さん) に返信

> string型をint型に変換できないとコンパイルエラーで終了。

string s = "123";
int i = int.Parse( s );

です。

引用返信 編集キー/
■29257 / inTopicNo.3)  Re[1]: stringからintへの変換
□投稿者/ επιστημη (1428回)-(2008/12/06(Sat) 12:03:57)
επιστημη さんの Web サイト
> string型をint型に

int.TryParse

引用返信 編集キー/
■29258 / inTopicNo.4)  Re[2]: stringからintへの変換
□投稿者/ やじゅ (836回)-(2008/12/06(Sat) 12:21:49)
やじゅ さんの Web サイト
2008/12/06(Sat) 12:56:57 編集(投稿者)

string w,r;
Bitmap bmp = new Bitmap(pb2.Image,w,r);

Bitmap bmp = new Bitmap(pb2.Image,int.Parse(w),int.Parse(r));

w,rが小数点有りなのがちと気になるな

文字列を数字に変換する
http://dobon.net/vb/dotnet/programing/convert.html
文字列を数値に変換するには?(TryParse編)
http://www.atmarkit.co.jp/fdotnet/dotnettips/408tryparse/tryparse.html

引用返信 編集キー/
■29261 / inTopicNo.5)  Re[3]: stringからintへの変換
□投稿者/ kinta (2回)-(2008/12/06(Sat) 12:54:43)
.SHOさま、επιστημηさま、やじゅさま

早速のアドバイスありがとうございます。
無事、エラーもなく出来ましたが、今度は画像がその値に上手く調整されず、またエラーとなってしまいました。
まだ他に問題があったようです。もしこの他に何か追記記載するようなものがあればまたアドバイスいただければと思います。
よろしくお願いします。


引用返信 編集キー/
■29262 / inTopicNo.6)  Re[4]: stringからintへの変換
□投稿者/ .SHO (317回)-(2008/12/06(Sat) 13:06:49)
No29261 (kinta さん) に返信

> 無事、エラーもなく出来ましたが、今度は画像がその値に上手く調整されず、またエラーとなってしまいました。

どこで、どういうエラーになったのですか?
引用返信 編集キー/
■29263 / inTopicNo.7)  Re[4]: stringからintへの変換
□投稿者/ やじゅ (837回)-(2008/12/06(Sat) 13:10:08)
やじゅ さんの Web サイト
No29261 (kinta さん) に返信

pb2だと、現画像が対象になってないんじゃないかな?

// 乱数で作成された横、縦のイメージを作成する
Bitmap bmp = new Bitmap(pb2.Image,w,r);

Bitmap bmp = new Bitmap(src,w,r); または Bitmap bmp = new Bitmap(pb1.Image,w,r);
引用返信 編集キー/
■29264 / inTopicNo.8)  Re[1]: stringからintへの変換
□投稿者/ .SHO (318回)-(2008/12/06(Sat) 13:17:30)
No29255 (kinta さん) に返信

> if(a == -1)
> {
> w += "0.0";
> }

エラーとは直接関係しないですけど↑これは間違ってますよね?
引用返信 編集キー/
■29265 / inTopicNo.9)  Re[4]: stringからintへの変換
□投稿者/ よねKEN (220回)-(2008/12/06(Sat) 13:18:47)
2008/12/06(Sat) 13:22:55 編集(投稿者)

> 無事、エラーもなく出来ましたが、今度は画像がその値に上手く調整されず、またエラーとなってしまいました。

どこでどんなエラーになるのですか?

> ・乱数を使って拡大されると有効桁数が永遠に続くので第1位まで表示させるようにif文で調整

とソース概要で説明されていますが、Bitmapのサイズは整数ですので、第一位までではなく整数に丸める必要があります。
なので、ソースコードをどう組むかの前に前提の見直しが必要かと思います。

--
・追記
 前半の指摘は.SHOさんが、後半の指摘はやじゅさんが No29258 で既に指摘されていました。
 すみません、もろかぶりですorz

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -