過去の桐井戸端BBS (桐ver.8)
4442 大きな画像をスクロールさせて見るようにしたい 佐藤尚 2000/02/04-12:50
初めまして。桐Ver.5以来、ブランクを経て、最近Ver.8を買ったものです。
大きなサイズの画像を桐のフォーム等で閲覧する場合について、アドバイスし
てくださる方がい
らっしゃいましたら、お願い致します。
一画面に収まりきらないような画像を、スクロールさせて見ることができるよ
うにしたいのです
が、普通のフォームではそのような機能はサポートされていないようです。
やはり、イベントや一括処理などで対処するしかないのでしょうか。

以前、桐Ver.5を使っていたは一括処理など組んで仕事で使っていたのですが、
今回は紙のマ
ニュアルが付属していないので、イベントの作成などは手が出ないでいます。
もし、教えて下さる方がいらっしたら幸いです。よろしくお願いします。

4448 Re:画像について 佐田 守弘 2000/02/04-21:08
記事番号4442へのコメント
佐藤尚さん
桐のフォームに表示できる画像は、ピクチャオブジェクトの中に等倍ないし整数
倍の拡大を行うか、オブジェクトサイズに合わせて表示できる設定(スケールを
設定)しかありません。
ただし、スケールの設定もやや問題があり、オブジェクトのサイズになる様に縦
横とも独立の尺度で拡大縮小されてしまうため、画像の縦横比率が狂ってしまう
場合があります。

もしデジカメの画像の様に、もともとの画像サイズが決まっている時には、その
日率に合わせたピクチャオブジェクトを作成し、表示サイズにスケールを設定し
て、縮小表示するしかありません。

御質問の主旨は、スクロールしながら全体表示ができないかですが、桐ではこの
機能はありません。仮にイベントを使っても、桐の機能だけでは画像のスクロー
ル表示は不可能です。

ではどうすれば良いかですが、スクロール表示ができるビューアかブラウザを桐
から起動し、表示する画像ファイル名を引き渡して表示させる方法があります。
フリーソフトかシェアウエアに、画像ファイルを表示するビューアがあると思い
ますから、適当なものを選んでみて下さい。
IEや、NetscapeNavigatorの様なWEBブラウザでも画像の表示ができます。これら
のブラウザには、メニューバーなどを表示せずに起動する起動パラメータがある
のではないかと思います。

桐からこれらのビューアやブラウザを起動する方法ですが、いくつかの方法が考
えられます。
中でも一番簡単なのがイベントを使う方法です。イベントは難しそうに見えます
が、本当は簡単です。画像ファイルを表示しているテキストオブジェクトに対し
て、マウス左ダウンイベントを設定しても良いでしょう。あるいはコマンドボタ
ンを作り、手続きを呼び出す方法も可能です。

佐田守弘(KS-00119)
4451 Re:画像について 悲しげ 2000/02/04-21:30
記事番号4448へのコメント
どもっ、佐藤さん、佐田さん、

>桐のフォームに表示できる画像は、ピクチャオブジェクトの中に等倍ないし整数
>倍の拡大を行うか、オブジェクトサイズに合わせて表示できる設定(スケールを
>設定)しかありません。
>ただし、スケールの設定もやや問題があり、オブジェクトのサイズになる様に縦
>横とも独立の尺度で拡大縮小されてしまうため、画像の縦横比率が狂ってしまう
>場合があります。

え〜、「クリップ」と「スケール」の他に「ズーム」と云う設定もあり
ます。これは、ピクチャの縦横比を保持したまま、オブジェクトの縦ま
たは横のサイズに合わせて拡縮表示できます。

ただ、オブジェクトのサイズに拡縮するのではなく、原寸のまま表示し
たいとした場合、特に画面をはみ出すような場合に桐ではスクロールで
きないと云うのは佐田さんのおっしゃるとおりです。
この点については、アックンと云う方が、フォーム(あるいはピクチャ
オブジェクト)の任意の場所をドラッグすることで、スクロールを実現
すると云うイベントに挑戦していたと記憶しています。が、この場合、
動かした後にゴーストが残ってしまうそうで、この点、解決したかどう
かは定かではありません。
その辺りも含めて、「フォーム呼び出し」コマンドならぬ「アックン呼
び出し」コマンドをここで発行してみたいと存じます。(^^;)

アックン、見てる〜?

4455 Re:画像について 佐田 守弘 2000/02/04-22:21
記事番号4451へのコメント
悲しげさん

フォローありがとうございます。
ピクチャオブジェクトの表示サイズですが、私が勘違いしておりまして、悲しげさんが
書かれた通りです。実は、ズームの設定はフォームとレポートで動作が異なり、この点
で勘違いがありました。訂正を兼ねて、まとめておきます。

●フォームのピクチャオブジェクトの表示サイズ
・クリップ:等倍で表示
・ズーム:縦横比を保持して、オブジェクト内に表示
・スケール:縦横ともオブジェクトのサイズに合わせる

●レポートのピクチャオブジェクトの印刷サイズ
・自動:オブジェクトの表示幅に応じて整数倍で印刷(縦方向拡張あり)
・ズーム:オブジェクトの表示幅に応じて整数倍で印刷(縦方向拡張なし)
・スケール:オブジェクトサイズに縦横サイズを合わせて印刷
・1倍〜3倍:指定倍率で印刷

という事で、スケールだけはフォームとレポートのピクチャオブジェクトで同じ仕様で
すが、ズームの仕様は異なります。

佐田守弘(KS-00119)

〔余談〕
先日、管理工研にて開発の方と話をした時、「縦横比率を保持してオブジェクト内に表
示する指定が欲しい」と言った所、「そうですね、必要ですね」の様な事を言っていた
様な。
だから、てっきりできないものだとばかり思っておりました。
(呼び出しモード:その時の立会人さ〜ん。)
4458 Re:画像について 関口喜人(立会人) 2000/02/05-00:03
記事番号4455へのコメント
>先日、管理工研にて開発の方と話をした時、「縦横比率を保持してオブジェクト内に表
>示する指定が欲しい」と言った所、「そうですね、必要ですね」の様な事を言っていた
>様な。
>だから、てっきりできないものだとばかり思っておりました。
>(呼び出しモード:その時の立会人さ〜ん。)
確かに、あの時は、自分もまだ桐にその機能がないような説明をされたような気がします
他の画像表示ソフトもいいけれど、桐のフォームでしっかり表示できるようにしてもらいたいも
のです
それにしても、もっといろいろな種類のファイルをサポートしてほしいですね!
フォトショップのファイルをよく使う人がいると思われますので
動画も表示できれば、私どもの業界でももっと利用できると思います



4462 Re:画像について 佐藤尚 2000/02/05-01:45
記事番号4448へのコメント
佐田さん 早速のコメントありがとうございます。
疑問に答えて下さる方がいるのは、桐を使っていく上で
大変心強いです。

桐に画像をスクロール表示させる機能がないのは残念
ですが、できないとはっきりわかったので、その方向
で取り組んでみたいと思います。
ありがとうございました。
4464 Re:画像について 佐藤尚 2000/02/05-01:53
記事番号4451へのコメント
悲しげさん コメントありがとうございます。

今のところ、Ver.8については全くといっていい
くらい知識がないので、お答え頂けると本当に助かります。
やはり画像のスクロール機能はないのですね。残念です。

イベントを使ってスクロールを実現しようとした方
がいらっしゃるようですね。成功していたら、ぜひ
そのイベントを参照させていただきたいところです。

イベントを作るのは面白そうですね。時間をみつけて
私も色々取り組んでみたいと思います。
4475 Re:画像について いかすぱげてぃ 2000/02/05-13:05
記事番号4442へのコメント
佐藤尚さん、こんにちわ。

桐でのスクロールもさほど難しくないイベントで実現できますので
是非、勉強してみてください。(^^)

画像スクロールを実現させるには

1)ピクチャオブジェクトの表示サイズを「クリップ」として
2)横の位置、縦の位置を一番右の「桁合わせのアイコン」を指定しておきます。
3)そして、開始位置Xと開始位置Yの調整で画像が動くわけです。

ですから、あとは、開始位置Xと開始位置Yの値をイベントで加減してやれば
画像は好きにスクロールするわけです。

一番シンプルな方法は[↑][↓][←][→]の四つのコマンドボタンを設定して次の
ような4つのコマンドボタンに対するイベントを書きます。

*--------------------------------------------------------------------*
名札 メイン
変数宣言 整数{&開始位置X=0,&開始位置Y=0}


手続き定義開始 ↓::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長
整数 &フラグ,参照 長整数 &処理中止)

  &開始位置Y=&開始位置Y+20 */ クリックで移動したいピクセル数 /*  
  オブジェクト操作 @ピクチャ_1.ピクチャの開始位置Y = #str(&開始位置Y)
  method @フォーム.描画更新()
手続き定義終了

手続き定義開始 ↑::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長
整数 &フラグ,参照 長整数 &処理中止)

  &開始位置Y=&開始位置Y-20 */ クリックで移動したいピクセル数 /*  
  オブジェクト操作 @ピクチャ_1.ピクチャの開始位置Y = #str(&開始位置Y)
  method @フォーム.描画更新()
手続き定義終了


手続き定義開始 →::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長
整数 &フラグ,参照 長整数 &処理中止)

  &開始位置Y=&開始位置Y+20 */ クリックで移動したいピクセル数 /*  
  オブジェクト操作 @ピクチャ_1.ピクチャの開始位置Y = #str(&開始位置Y)
  method @フォーム.描画更新()
手続き定義終了

手続き定義開始 ←::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長
整数 &フラグ,参照 長整数 &処理中止)

  &開始位置X=&開始位置X-20 */ クリックで移動したいピクセル数 /*  
  オブジェクト操作 @ピクチャ_1.ピクチャの開始位置X = #str(&開始位置X)
  method @フォーム.描画更新()
手続き定義終了
*--------------------------------------------------------------------*

イベントに慣れてくれば、後は応用です。

開始位置を0以下にしないような処理やファミリを使って効率化よく書くことも
出来ますし、スクロールサイズをボタンのクリック位置で調整してやることも
いいでしょう。
また、マウス移動イベントと合わせてやれば、ドラッグで画像をスクロールする
ことも可能です。さらに、ペイント系ソフトのように、画像の上で好きに移動する
こともさほど難しい処理ではありません。

是非、頑張って、イベントも取得してみてください。
桐を利用する上で、凄く応用範囲が広がると思います。

ps.悲しげ様>たはは、アックンの代わりに出てきてしまいました。(^^;

   ちなみに、スクロールお化けに苦しむのはドラッグ&ドロップ対応を
   スムーズに対応させようとした時です。
   ようするに高速スクロールの時ですね。(^^)v

4476 Re:画像について いかすぱげてぃ 2000/02/05-13:10
記事番号4475へのコメント
適当にカットアンドペーストしたもので、あちこち間違ってます。

>手続き定義開始 →::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長
>整数 &フラグ,参照 長整数 &処理中止)
>
>  &開始位置Y=&開始位置Y+20 */ クリックで移動したいピクセル数 /*  
>  オブジェクト操作 @ピクチャ_1.ピクチャの開始位置Y = #str(&開始位置Y)
>  method @フォーム.描画更新()
>手続き定義終了


手続き定義開始 ←::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長
整数 &フラグ,参照 長整数 &処理中止)

  &開始位置X=&開始位置X-20 */ クリックで移動したいピクセル数 /*  
  オブジェクト操作 @ピクチャ_1.ピクチャの開始位置X = #str(&開始位置X)
  method @フォーム.描画更新()
手続き定義終了


ようするに →:&開始位置X 加算
      ←:&開始位置X 減算
      ↓:&開始位置Y 加算
      ↑:&開始位置Y 減算

とほほほ…
4477 Re:画像について いかすぱげてぃ 2000/02/05-13:33
記事番号4476へのコメント
ちなみに、「マウス左ダウン」イベントはマウスが左ボタン押されている間中、
発生するとマニュアルには書かれてますが、実際は発生しません。

ちゃんと、更正しろよな>K3の某S氏(笑い) 見てたらごめん。(^^;

4492 Re:画像について アックン 2000/02/05-19:45
記事番号4442へのコメント
近頃は別の世界にどっぷり浸っていたのですが、呼ばれてのこのこ出てまいりま
した。
お気楽に生きているのが悲しげさんと幅田さんにしっかりばれており、隠れよう
がなかったもんで...(とほほ)。
佐藤尚さん、はじめまして。
私が以前やっていたのはウィンドウをドラッグする処理だったのですが、それを
応用すればよさそうです。
フォームにピクチャオブジェクト(pic_2)を配置して、次のようなイベントファ
イル(kevファイル)を作成してみました。
一箇所わけのわからん動作をするので、ちょっと悩んでます。
クリックしていざドラッグしようとカーソルを移動したその瞬間、画像の表示位
置の座標が元の 0 に戻ってしまうんです。このままではおよそ役に立ちそうに
ありませんね。どうしたものやら(^^;。 >いかさん、どーして?

p.s.
いちいち設定を書き写して修正するのも面倒だしわかりにくいだろうと思うので
、フォームなど一式をEメールでお送りしました。
ウィンドウをドラッグする処理も併せてご覧ください。
-------------------

名札 メイン
var 数値{&xy[4]}\
,整数{&mousedrag}

proc pic_2::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長整
数 &フラグ,参照 長整数 &処理中止)
 &mousedrag = 1 ,\
 &xy[1] = &マウス位置[1] ,\
&xy[2] = &マウス位置[2]
object ハンドル=&hwindow,@pic_2{&xy[3]=ピクチャの開始位置X,&xy[4]=ピクチャ
の開始位置Y}
end

proc pic_2::マウス左アップ(長整数 &マウス位置[2],長整数 &明細番号,長整
数 &フラグ)
 &mousedrag = 0
end

proc pic_2::マウス移動(長整数 &マウス位置[2],長整数 &明細番号,長整数
 &フラグ)
if (&mousedrag)
object ハンドル=&hwindow,@pic_2{\
ピクチャの開始位置X=#num(#PointToDot((&xy[3]+&xy[1]-&マウス位
置[1])/20)),\
ピクチャの開始位置Y=#num(#PointToDot((&xy[4]+&xy[2]-&マウス位
置[2])/20))}
end
end

proc pic_2::マウスインアウト(長整数 &フラグ,長整数 &明細番号)
if (&フラグ)
  object &this.マウスポインタの種類 = "Finger.cur"
*   object &this.マウスポインタの種類 = "Hand-m.cur"
else
  object &this.マウスポインタの種類 = "標準"
end
end

4503 Re:画像について 佐藤尚 2000/02/06-09:42
記事番号4477へのコメント
いかすぱげてぃさん ありがとうございます。

おっしゃるように、イベントについて少し勉強してみようと思います。
実のところ、私は文系の人間なので、紙でマニュアルがないと、
なかなか敷居が高いところがあって、その辺りが問題ではありますが。
HTMLのマニュアルを全部印刷するのも少し躊躇しているところです。
少しづつやっていこうと思います。
ありがとうございました。

4504 Re:画像について 佐藤尚 2000/02/06-09:59
記事番号4492へのコメント
アックンさん ありがとうございます。

メールの方も受け取らせて頂きました。うっかりMacの、それもポストペットで
落としてしまったので一瞬しまったとおもいましたが、Windowsマシンの方に
もっていってLHAで解凍したら何の問題もありませんでした。
わざわざ送って頂けるとは思っていなかったので感激です。中を見て勉強させて
頂きます。
本当にありがとうございました。

4524 Re:画像について アックン 2000/02/07-14:02
記事番号4504へのコメント
マウス左ダウンとマウス移動を変更しておきます。
マウスの移動量よりもピクチャの移動量のほうが大きいので、いまいちですが。
これは私の単位換算が違っているのが原因かもしれません。
またヒマを見て考えておきます。

なお、桐の「ピクチャの開始位置X」「ピクチャの開始位置Y」の?ヘルプは、現状とは
明らかに仕様が異なっています。これはどちらかが誤りでしょう。

佐藤さん> お疲れでしょうから、レスなしで結構です。

**------< ピクチャをドラッグしてスクロールする処理/始まり >------
proc pic_2::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長整数
 &フラグ,参照 長整数 &処理中止)
 &mousedrag = 1 ,\
 &xy[1] = #PointToDot(&マウス位置[1]/20) ,\
 &xy[2] = #PointToDot(&マウス位置[2]/20)
end

proc pic_2::マウス左アップ(長整数 &マウス位置[2],長整数 &明細番号,長整数
 &フラグ)
 &mousedrag = 0
end

proc pic_2::マウス移動(長整数 &マウス位置[2],長整数 &明細番号,長整数 &
フラグ)
 if (&mousedrag)
   object ハンドル=&hwindow,@pic_2{&xy[3]=ピクチャの開始位置X
,&xy[4]=ピクチャの開始位置Y}
   object ハンドル=&hwindow,@pic_2{\
       ピクチャの開始位置X=&xy[1]+&xy[3]-#PointToDot(&マウス位置
[1]/20),\
       ピクチャの開始位置Y=&xy[2]+&xy[4]-#PointToDot(&マウス位置
[2]/20)}
end
end

proc pic_2::マウスインアウト(長整数 &フラグ,長整数 &明細番号)
 if (&フラグ)
   object &this.マウスポインタの種類 = "Finger.cur"
 else
   object &this.マウスポインタの種類 = "標準"
 end
end
**------< ピクチャをドラッグしてスクロールする処理/終わり>---

戻る