ImgEditについて知りたいのですが

解決


堕天使  2004-06-05 01:53:02  No: 83832  IP: [192.*.*.*]

今ImgEditを使ってTIFファイルを表示しているのですが
画像を拡大・縮小をすると画像と一緒にImgEditの枠まで一緒
に大きくなってしまい画面から消えてしまうのですが。
何とか画像だけ拡大・縮小する方法はないですか

編集    削除
MM  2004-06-05 03:47:34  No: 83833  IP: [192.*.*.*]

ImgEditについては英文ですがリファレンスがあります。
下記を参照してみてください
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/3rdparty/html/hidh_imgedit_contents.asp

編集    削除
堕天使  2004-06-07 19:41:57  No: 83834  IP: [192.*.*.*]

MM様  何となく言いたいことは解りました
他にも参考になる所はありますか?

編集    削除
seven  2004-06-07 22:23:51  No: 83835  IP: [192.*.*.*]

>画像を拡大すると画像と一緒にImgEditの枠まで
>一緒に大きくなってしまい画面から消える

.Zoomではないんですか?

編集    削除
堕天使  2004-06-07 22:29:45  No: 83836  IP: [192.*.*.*]

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
縮小もこれに似たものです。

編集    削除
堕天使  2004-06-07 22:41:32  No: 83837  IP: [192.*.*.*]

スミマセン
上のは間違いですこれが正しい物です
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
縮小もこれと同じです
どうもスミマセン

編集    削除
seven  2004-06-07 22:57:27  No: 83838  IP: [192.*.*.*]

根本的に異なります

イメージ表示処理
    With ImgEdit1
        .Image = "XXX.tif"
        .Display
        .FitTo (0)
        lngZoom= CLng(.Zoom) ' 現在の拡大率を退避
    End With
拡大処理
    ' 設定値内(〜Max倍率)での(表示倍率 + 10)%
    Set goImg = ImgEdit1
    goImg.Zoom = lngZoom + 10
縮小処理
    上記、拡大とほぼ同様に

補足:
    ImgEditの表示域内での表示なので
    内部で現在の表示されているイメージが
    イメージの"高さ"に合わせた倍率なのか"幅"なのかを持っておき
    拡大/縮小の際に設定すればよいかと思います

編集    削除
堕天使  2004-06-08 01:29:07  No: 83839  IP: [192.*.*.*]

【現在の拡大率を退避】で色々試してみたのですが
 エラーに成ります。
 最後の質問です。【現在の拡大率を退避】は
 何になるのですか?

編集    削除
seven  2004-06-08 02:39:40  No: 83840  IP: [192.*.*.*]

単に値を変数に入れているだけなので型違反くらいしか思いつきませんが

>【現在の拡大率を退避】は何になる
イメージの初回表示の段階で現在表示されている
イメージの倍率を変数に格納します
その後、拡大/縮小の際に退避させた倍率にX%拡大/縮小する為のものです
質問の意図と反していればすみません

編集    削除
堕天使  2004-06-08 18:57:54  No: 83841  IP: [192.*.*.*]

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

編集    削除
seven  2004-06-08 19:38:25  No: 83842  IP: [192.*.*.*]

サンプルソースを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

後は各コマンドボタンを現在の拡大率が範囲外であれば
非表示にしたりすればよろしいのでは

編集    削除
堕天使  2004-06-08 20:23:51  No: 83843  IP: [192.*.*.*]

Seven様
このようなエラーが出ますが何でですか
Sub または Function が定義されていません
と出ます。一つご指導お願いします

編集    削除
seven  2004-06-08 20:51:59  No: 83844  IP: [192.*.*.*]

>Sub または Function が定義されていません
先程のサンプルをどう改変されたかが不明ですが
記述通りです
呼ばれている(Callされている)
Sub(Function)プロシージャが存在しない為です

編集    削除
堕天使  2004-06-08 21:42:52  No: 83845  IP: [192.*.*.*]

先ほどのサンプルをこのように変えました

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

編集    削除
seven  2004-06-08 22:02:21  No: 83846  IP: [192.*.*.*]

使用している変数の定義はされていると思いますが・

どこで上記エラーが発生するのですか?

編集    削除
堕天使  2004-06-08 22:08:41  No: 83847  IP: [192.*.*.*]

拡大・縮小をクリックすると出ます。

編集    削除
seven  2004-06-08 22:39:26  No: 83848  IP: [192.*.*.*]

使用している変数、プロシージャが定義されているか
コンポーネント(Image Edit Ctrl)の参照は問題ないか
再度確認してみて下さい

>拡大・縮小をクリックすると出ます
これでは答えようがありません

編集    削除
堕天使  2004-06-08 22:46:44  No: 83849  IP: [192.*.*.*]

おっしゃるとうりです
変数でiというのを宣言しています
このiに画像のサイズを代入しています
あとはiを10%ずつ拡大・縮小して
値を戻しています最後にディスプレイに
表示させています

編集    削除
堕天使  2004-06-10 00:28:17  No: 83850  IP: [192.*.*.*]

Seven様
何とか拡大・縮小出来るようになりました
まだ問題点はありますがゆっくり改善したいと
思います本当に有り難う御座いました

編集    削除
堕天使  2004-06-10 00:45:07  No: 83851  IP: [192.*.*.*]

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

画像も枠も両方大きく成りました

編集    削除