- PR -

WebカスタムコントロールでImageを返す方法

1
投稿者投稿内容
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2003-01-23 17:01
お世話になります

Imageを返すWebカスタムコントロールを作ろうとしていますが
うまく行きません。
コントロールはSystem.Web.UI.WebControls.WebControlを継承している為
Response.OutputStreamが使えません。
無理に、System.Web.UI.Pageに継承を変更したり、
System.Web.UI.Pageのオブジェクトを作成してもうまく行きません。

又、HtmlTextWriterへはStreamの出力は出来ないのですか。

何方か、ご存知の方よろしくお願いします。



一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-01-23 17:30
コントロールでイメージは作れないと思います。
Webのページ上の画像はページ上に表示されていますが、ページを取得した後にそのページ内の情報を元に、ブラウザがページとは別に画像のデータを要求しています。HTMLのソースを見ても、画像のデータは入っていないでしょう?

これ、使えませんかね?
http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet04/aspnet04_03.html

[ メッセージ編集済み 編集者: 一郎 編集日時 2003-01-23 17:31 ]
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2003-01-23 17:56
一郎さん情報有難う御座いました

紹介頂いたURLは、PageクラスのResponseについて書かれていましたが
Page.ResponseではImageをStreamで下記の様に返送可能です。
Bitmap bm;


Response.ContentType="image/jpeg";
bm.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

これと同じ事が、カスタムコントロールのSystem.Web.UI.WebControls.WebControl
で出来ないかなと思っているのですが。
恐らくWebユーザーコントロールでは出来ると思います。
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2003-01-24 06:45
済みません、少し進んだので質問の内容を変えます

下記のように呼び出し元のPageを使ってResponseが使えるようになり
カスタムコントロールよりImageは表示できるようになりました。
System.web.UI.Page page=base.Page;
Bitmap bm;


page.Response.ContentType="image/jpeg";
bm.Save(page.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
しかし、その位置を任意に変更出来ません(左上に固定)。
又、継承をSystem.Web.UI.WebControls.ImageButtonに変更してみましたが、
デザイン画面上でも左上に固定されます。
多分何か処理を追加しないといけないと思いますが、まだ分かりません。
よろしくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-01-24 08:59
ページに含まれるコントロールが、ページの出力の種類を勝手に変えているように見えます。
rvmxさんがなさりたいことは、そのコントロールをページに貼り付けると、その他にどんなコントロールがあろうとも関係なくレスポンスを(この場合はJPG画像に)変えてしまいたいという事ですか?

その作ったコントロールの他にページ内に適当な(テキストボックスとか)コントロールがあっても表示されなくないですか?やってないので分かりませんが。

rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2003-01-24 09:37
お世話になります

この質問とそれますが、
一郎さんの疑問にお答えします。
今作っているのは、コントロールなので特定な使い方は想定していません。
使い方の例としては、
一郎さんより質問の有った複数のコントロールとの共存、これは<IMG SRC=xxx.aspx
でHTMLの中に入れます(丁度アクセスカウンターと同じです)。
又、全てをImageで作成することも考えています。

1

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