今ImgEditを使ってTIFファイルを表示しているのですが
画像を拡大・縮小をすると画像と一緒にImgEditの枠まで一緒
に大きくなってしまい画面から消えてしまうのですが。
何とか画像だけ拡大・縮小する方法はないですか
ImgEditについては英文ですがリファレンスがあります。
下記を参照してみてください
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/3rdparty/html/hidh_imgedit_contents.asp
MM様 何となく言いたいことは解りました
他にも参考になる所はありますか?
>画像を拡大すると画像と一緒にImgEditの枠まで
>一緒に大きくなってしまい画面から消える
.Zoomではないんですか?
seven様
拡大のボタンが押されたらこの処理をさせています
Private Sub Command_Click()
ImgEdit1.Top = 0
VScroll1.Max = ImgEdit1.Height - Image.Height
With ImgEdit1
ImgEdit1.Image = "C:\0002.tif"
ImgEdit1.Display
ImgEdit1.FitTo (0)
End With
End Sub
縮小もこれに似たものです。
スミマセン
上のは間違いですこれが正しい物です
Private Sub Command1_Click()
ImgEdit1.Height = ImgEdit1.Height * 1.5
ImgEdit1.Width = ImgEdit1.Width * 1.5
With ImgEdit1
ImgEdit1.Image = "C:\0005.tif"
ImgEdit1.Display
ImgEdit1.FitTo (0)
End With
End Sub
縮小もこれと同じです
どうもスミマセン
根本的に異なります
イメージ表示処理
With ImgEdit1
.Image = "XXX.tif"
.Display
.FitTo (0)
lngZoom= CLng(.Zoom) ' 現在の拡大率を退避
End With
拡大処理
' 設定値内(〜Max倍率)での(表示倍率 + 10)%
Set goImg = ImgEdit1
goImg.Zoom = lngZoom + 10
縮小処理
上記、拡大とほぼ同様に
補足:
ImgEditの表示域内での表示なので
内部で現在の表示されているイメージが
イメージの"高さ"に合わせた倍率なのか"幅"なのかを持っておき
拡大/縮小の際に設定すればよいかと思います
【現在の拡大率を退避】で色々試してみたのですが
エラーに成ります。
最後の質問です。【現在の拡大率を退避】は
何になるのですか?
単に値を変数に入れているだけなので型違反くらいしか思いつきませんが
>【現在の拡大率を退避】は何になる
イメージの初回表示の段階で現在表示されている
イメージの倍率を変数に格納します
その後、拡大/縮小の際に退避させた倍率にX%拡大/縮小する為のものです
質問の意図と反していればすみません
Seven様
色々有り難う御座いました
今処理を行っているんですが値が渡されません
下のような内容ですご指導お願いします
Private Sub Command1_Click()
Dim i As Integer
i = 100
With ImgEdit1
ImgEdit1.Image = "XXX.tif"
ImgEdit1.Display
ImgEdit1.FitTo (0)
lngZoom = CLng(ImgEdit1.Zoom) + i
End With
Set goimg = ImgEdit1
goImgZoom = lngZoom + 10
End Sub
サンプルソースをUPします
Private lngPower As Long
'////////////////////////////////////////
' 拡大ボタン押下 10〜200までの範囲で拡大
'////////////////////////////////////////
Private Sub Command1_Click()
Set goImg = ImgEdit1
If lngPower >= 10 And lngPower <= 190 Then
lngPower = lngPower + 10
goImg.Zoom = lngPower
End If
goImg.Display
End Sub
'////////////////////////////////////////
' 縮小ボタン押下 10〜200までの範囲で縮小
'////////////////////////////////////////
Private Sub Command2_Click()
Set goImg = ImgEdit1
If lngPower >= 20 And lngPower <= 200 Then
lngPower = lngPower - 10
goImg.Zoom = lngPower
End If
goImg.Display
End Sub
Private Sub Form_Load()
With ImgEdit1
.Image = "d:\無題.tif"
.Display
.FitTo (0)
lngPower = CLng(.Zoom)
End With
End Sub
後は各コマンドボタンを現在の拡大率が範囲外であれば
非表示にしたりすればよろしいのでは
Seven様
このようなエラーが出ますが何でですか
Sub または Function が定義されていません
と出ます。一つご指導お願いします
>Sub または Function が定義されていません
先程のサンプルをどう改変されたかが不明ですが
記述通りです
呼ばれている(Callされている)
Sub(Function)プロシージャが存在しない為です
先ほどのサンプルをこのように変えました
Private Sub Command1_Click()
Set goimg = ImgEdit1
If lngpower >= 10 And lngpower <= 200 Then
lngpwer = lngpower + 10
goImgzoom = lngpower
End If
ImgEdit1 = goimg
ImgEdit1.Display
End Sub
使用している変数の定義はされていると思いますが・
どこで上記エラーが発生するのですか?
拡大・縮小をクリックすると出ます。
編集 削除使用している変数、プロシージャが定義されているか
コンポーネント(Image Edit Ctrl)の参照は問題ないか
再度確認してみて下さい
>拡大・縮小をクリックすると出ます
これでは答えようがありません
おっしゃるとうりです
変数でiというのを宣言しています
このiに画像のサイズを代入しています
あとはiを10%ずつ拡大・縮小して
値を戻しています最後にディスプレイに
表示させています
Seven様
何とか拡大・縮小出来るようになりました
まだ問題点はありますがゆっくり改善したいと
思います本当に有り難う御座いました
Seven様これが完成のソースになりました
Private Sub Command1_Click()
ImgEdit1.Height = ImgEdit1.Height * 1.1
ImgEdit1.Width = ImgEdit1.Width * 1.1
Set goimg = ImgEdit1
If lngPower >= 10 And lngPower <= 200 Then
lngPower = lngPower + 10
goimgzoom = lngPower
End If
With ImgEdit1
ImgEdit1.Display
ImgEdit1.FitTo (1)
End With
End Sub
画像も枠も両方大きく成りました