ピクチャボックスの最大幅は?


奈菜美  2005-05-10 14:11:15  No: 89728  IP: [192.*.*.*]

ピクチャボックスにグラフを描画しているのですが
幅に16383以上の値を設定しても自動的置き換えられて
しまいます。(ScaleModeはピクセル)

pic.Width = 棒グラフの幅 * 棒グラフの数 

↑棒グラフの幅 * 棒グラフの数 = 20000であっても
  pic.Width の値は16383となります

16383(2^14)がピクチャボックスの幅の最大値なのでしょうか?
どなたかご存知の方、教えて頂けないでしょうか・・・

編集 削除
K.J.K.  2005-05-10 20:52:43  No: 89729  IP: [192.*.*.*]

仕様ですので、表示されるべき領域だけを必要に応じて
描画する、という仕組みに変えるべきでしょう。

編集 削除
ねろ  2005-05-11 10:23:07  No: 89730  IP: [192.*.*.*]

>幅に16383以上の値を設定しても自動的置き換えられて
>しまいます。(ScaleModeはピクセル)
これは又思いっきり狭いですね。(^^;
どのような環境でしょう、VGAのノートパソコンとか。。(単なる興味です)
私の環境では、FormのWidthのMAXは19200Twipsで
PictureBoxのWidthのMAXは245745Twpsです。

編集 削除
Dental  2005-05-11 10:38:05  No: 89731  IP: [192.*.*.*]

>>ねろさん

元質問者は、
>(ScaleModeはピクセル)
と書かれていますよ。

編集 削除
ねろ  2005-05-11 11:42:25  No: 89732  IP: [192.*.*.*]

単位は『ピクセル』でしたか。orz

編集 削除
奈菜美  2005-05-12 09:08:38  No: 89733  IP: [192.*.*.*]

おはようございます。

やはり仕様なのですね・・・
ピクチャボックス内のグラフをスクロールする様に作成している為
"表示される領域だけを必要に応じて描画する"とスクロールの動きに
ついてこれない気がして・・・

編集 削除
ねろ  2005-05-12 09:18:15  No: 89734  IP: [192.*.*.*]

色々なテクニックが有りますが、取りあえず
スクロールの度にデーターを書き換えるのでは無く、
PictureBoxを2枚用意して横に並べてグラフを書き、
スクロールは2枚同時にするようなしたらいかがですか。

編集 削除
やおきな  2005-05-12 09:37:09  No: 89735  IP: [192.*.*.*]

グラフをスクロールするって何か変ではないですか。
全体が見えなければグラフの意味がないのでは?

座標空間はスケーリングして使用すれば、
ピクチャボックス幅の最大値の問題はなくなります。
VB.NETでは、e.Graphics.ScaleTransform()  を使用します。
VB6でも同じ機能があるはずです。

それから、VB.NETではピクチャボックス幅は、2^16ピクセルまであります。

編集 削除
ねろ  2005-05-12 10:08:04  No: 89736  IP: [192.*.*.*]

>グラフをスクロールするって何か変ではないですか。
>全体が見えなければグラフの意味がないのでは?
たとえば、『一日の売上を棒グラフにして5年分を表示してください。』
と言う仕様があったとした場合、やおきなさんはどのようにされますか。

編集 削除
奈菜美  2005-05-17 14:27:12  No: 89737  IP: [192.*.*.*]

作成しているグラフは5分置きに送られてくるデータを
指定された期間分表示したい・・・です。
   1日分の幅 = 棒グラフの幅 * 12 * 24
     (注:5分ごとなので1時間当り12本で24時間分)

   描画したい幅 = 1日分の幅 * 表示日数

メインのピクチャボックスの中にサブのピクチャボックスを
張り付け、スクロールバーでスクロールさせています。

サブのピクチャボックスの幅が16383よりも大きくならず
現在は指定期間の最大日数を15日程度に制限しています。
本当は1ヶ月分くらい表示したのですが、
仕様というのであれば、無理ですね・・・

編集 削除
ねろ  2005-05-18 07:43:28  No: 89738  IP: [192.*.*.*]

一枚のPictureBoxに書かずに、複数枚のPictureBoxに
書けばいいだけなのですが。

編集 削除