- PR -

(ASP.NET)ImageUrl画像表示のちらつき?

投稿者投稿内容
らす亭
会議室デビュー日: 2006/09/21
投稿数: 8
投稿日時: 2006-09-21 09:31
VisualStudio2005でWebアプリを作成しています。

以下のコードで質問があります。

protected void Button1_Click(object sender, EventArgs e)
{
SimImage.ImageUrl = "SimMerge.aspx";
}

--- SimMerge.aspxの内容 ---

protected void Page_Load(object sender, EventArgs e)
{
using (Bitmap bmp = new Bitmap(Request.PhysicalApplicationPath + "gaikan01.jpg"))
{
for ( X=0; X<bmp.Width; X++ ) // ここでピクセル処理をしている
bmp.SetPixel(X,0,tcCol);
Response.ContentType = "image/JPEG";
bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}

----------------------

Button1_Click のイベントが発生したときに、SimMerge.aspx内で画像処理をしているのですが、
Button1_Clickしたときに、画面が白くなってから画像が表示されるときがあります。
画像表示 → イベント(一瞬画像が白くクリアされる) → 画像表示
となるので、
画像表示 → 画像表示 とスムースに画像が表示される方法があるのか教えてください。

よろしくお願いします。
ピカード
常連さん
会議室デビュー日: 2006/09/01
投稿数: 37
お住まい・勤務地: 関西
投稿日時: 2006-09-21 10:49
Webアプリケーションの基本動作を理解していますか?
リロードなしで画像だけを書き換えたいのであれば、JavaScript等でXMLHTTPRequest等を使用して非同期通信を行います。

[ メッセージ編集済み 編集者: ピカード 編集日時 2006-09-21 10:54 ]
らす亭
会議室デビュー日: 2006/09/21
投稿数: 8
投稿日時: 2006-09-21 10:52
いいえ、すみません、初心者です。

ということは無理ということなんでしょうか。
そういう基本が載ってる文献ってあるのですか?

すみません、お願いします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-09-21 10:54
ボタンをクリックしたとき、PostBackが起きて新しくHTMLが生成されてブラウザに
返されます。
で、そこでIMGタグのSRCにSimMerge.aspxが指定されているので、あらためて
画像をとりにいきます。
ブラウザに画像がダウンロードされてはじめて画面上に表示されるまでは
白い状態になっているかもしれませんね。

ということで、どうしようもないと思います。
らす亭
会議室デビュー日: 2006/09/21
投稿数: 8
投稿日時: 2006-09-21 14:37
詳しい説明でよくわかりました。
ありがとうございました。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-09-21 18:36
ポストバックではなく、非同期で画像を入れ替えるのであれば、

コード:
private void Page_Load(object sender, System.EventArgs e)
{
	Button1.Attributes["onclick"] 
		= "document.getElementById('SimImage').src = 'SimMerge.aspx';return false;";
}

どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-09-21 18:52
VS2005(ASP.NET 2.0)を使っているのであれば、ボタンのOnClientClickプロパティを使ってもいいかな。
まぁ、記述する文字列(JavaScript)は同じものだけど。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-21 21:37
 aspx?いま、VS2005 の環境を立ち上げていないので具体的なクラス名は出せませんが、その用途のためのクラスがあったと思いますよ?拡張子が ashx かなんかになったと思う。
(やることは同じなんだけど、パフォーマンスが良くなるはず)
_________________

スキルアップ/キャリアアップ(JOB@IT)