- ベストアンサー
ピクチャボックスのサイズを状況に応じて変えたい
- ピクチャボックスのサイズを状況に応じて変えたい。作図範囲のみを表示させる方法はある?Windows2000、VB6.0環境。
- ピクチャボックスのサイズを変えて作図範囲のみを表示したい。ユーザビリティ向上のためにサイズの動的変更が必要。Windows2000、VB6.0環境。
- ピクチャボックスのサイズを柔軟に変更し、作図範囲のみを表示させたい。ユーザビリティ向上のために必要な変更。Windows2000、VB6.0環境。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
テキストデータから座標を取得しているなら、テキストデータを読込み又は、表示の時に、 最大のX座標とY座標を取得すればよいのではないでしょうか? 例えば Option Explicit Private Sub Command1_Click() data_read End Sub '*************************** Sub data_read() Dim x1 As Long Dim y1 As Long Dim x2 As Long Dim y2 As Long Dim max_x As Long Dim max_y As Long Dim min_x As Long Dim min_y As Long Open "[ファイル名]" For Input As #1 max_x = 0: max_y = 0 min_x = Picture1.ScaleWidth: min_y = Picture1.ScaleHeight While (Not EOF(1)) Input #1, x1, y1, x2, y2 '最大のX座標とY座標を求める max_x = maxvalue(max_x, x1, x2) max_y = maxvalue(max_y, y1, y2) '最小のX座標とY座標を求める min_x = minvalue(min_x, x1, x2) min_y = minvalue(min_y, y1, y2) '線画 Picture1.Line (x1, y1)-(x2, y2) Wend hanten max_x + min_x, max_y + min_y Close #1 End Sub '********************************************** ' 上下反転 ' 'Picture1.ScaleMode = 1 - Twip 'Picture2.ScaleMode = 1 - Twip の場合 '********************************************** Sub hanten(x As Long, y As Long) With Picture2 .Width = x .Height = y .PaintPicture Picture1.Image, 0, y, Picture1.ScaleWidth, -Picture1.ScaleHeight Image1.Picture = .Image End With End Sub '*************************** '引数の中で1番大きな値を返す Function maxvalue(V1 As Long, V2 As Long, V3 As Long) As Long If (V1 > V2) Then If (V1 > V3) Then maxvalue = V1 Else maxvalue = V3 End If Else If (V2 > V3) Then maxvalue = V2 Else maxvalue = V3 End If End If End Function '*************************** '引数の中で1番小さな値を返す Function minvalue(V1 As Long, V2 As Long, V3 As Long) As Long If (V1 < V2) Then If (V1 < V3) Then minvalue = V1 Else minvalue = V3 End If Else If (V2 < V3) Then minvalue = V2 Else minvalue = V3 End If End If End Function のような感じで。 実際のファイル内容が分かりませんので、例ではLine用の座標のみです。 min_x,min_yは無くてもかまいません。 hanten max_x + min_x, max_y + min_y の部分で最大の部分ちょうどだと見栄えが悪いので、左余白(min_x)と上余白(min_y)分、左下を伸ばしました。 min_x,min_yを100などに固定してもいいと思います。 上下反転等、mmc820さんのプログラムと違う所は訂正してください。
その他の回答 (2)
- taisuke555
- ベストアンサー率55% (132/236)
また2度書きになってしまって申し訳ありません。 前回の質問の件ですよね? 違っていた場合、作図範囲はどのように決まるのでしょうか? それが分かれば Dim wi As Long Dim he As Long With Picture1 .Visible = False wi = .Width he = .Height '線画の範囲に変更 .Width = [線画範囲横幅] .Height = [線画範囲縦幅] Image1.Picture = .Image '元に戻す .Width = wi .Height = he .Visible = True End With の様な感じですか... 作図範囲が分からないと言うと作図範囲を求めるプログラムが必要になります。
お礼
締め切りが遅れまして申し訳ありません。あれから忙しい日々が続いてしばらくインターネットから遠い生活を送っていました・・・。 おかげでプログラムも完成間近となり、ようやく解放してもらえそうです。 この度は大変お世話になりました。 ご回答ありがとうございました。
補足
度々のご回答有難うございます。 この作図の部分ですが、テキストデータから座標を読み込んで書いているので、読み込むデータによってサイズの大小の差が大きくなってしまうのです。以前、質問させていただいたように、一度描画して反転するので、最初に書いた際の下部余白が反転された時に上部にきてしまい、図面を見るのに手間取ってしまうのです。 >作図範囲が分からないと言うと作図範囲を求めるプログラムが必要になります。 との事ですが、この作図範囲を求める方法をお聞かせいただけませんか? 重ね重ねご迷惑をお掛けしますが宜しくお願い致します。
- taisuke555
- ベストアンサー率55% (132/236)
Picture1.Picture = LoadPicture("ファイル名") でファイルを読み込んでいると思いますが デザイン時に Picture1.AutoSize = True とすると読み込んだファイルのサイズにPicture1を合わせることが出来ます。 読み込んだ後で Picture2.width = picture1.width Picture2.height = picture1.height とすれば、Picture2のサイズをPicture1に合わせる事が出来ると思います。
お礼
お礼が遅れまして申し訳ありません。 度々の質問にも関わらず、ご丁寧に回答いただき大変感謝しております。 さて、結果の方ですが試行錯誤の結果、無事に表示領域を設定する事が出来ました。これでだいぶ使い勝手も向上し、この後の作業にも集中する事が出来ます。 この度は大変お世話になりました。また、今後お力添えをいただくことがあるかと思いますが、taisuke555さんのご意見、ご指摘等いただければ幸いです。 有難うございました。