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


奈菜美  2005-05-10 23:11:15  No: 89728

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

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

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

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


K.J.K.  2005-05-11 05:52:43  No: 89729

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


ねろ  2005-05-11 19:23:07  No: 89730

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


Dental  2005-05-11 19:38:05  No: 89731

>>ねろさん

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


ねろ  2005-05-11 20:42:25  No: 89732

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


奈菜美  2005-05-12 18:08:38  No: 89733

おはようございます。

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


ねろ  2005-05-12 18:18:15  No: 89734

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


やおきな  2005-05-12 18:37:09  No: 89735

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

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

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


ねろ  2005-05-12 19:08:04  No: 89736

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


奈菜美  2005-05-17 23:27:12  No: 89737

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

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

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

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


ねろ  2005-05-18 16:43:28  No: 89738

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加