vb2005で LEADTOOLS 16.5J を使用して元画像よりトリミングするプログラムを作っています。
Private Sub RasterImageViewer1_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles theViewer.MouseDown
'クリックされた地点より、長さ150の正方形の座標を指定
Dim strRectangle As Rectangle = New Rectangle(e.X, e.Y, 150, 150)
'リージョンを作成
RasterImageViewer.Image.AddRectangleToRegion(Nothing, strRectangle, Leadtools.RasterRegionCombineMode.Set)
End Sub
画像をクリックすると、リージョン(トリミングする範囲の点線)の枠が表示されるのですが、
座標の左上(0,0)から離れれば離れるほど、クリックした地点より右下にずれてリージョンの枠が表示されてしまいます。
調べてみると、オフセットを調整する処理が必要らしいことは分かったのですが、
具体的にどうすれば良いのか分かりません。
ご伝授よろしくお願いします。
No.1ベストアンサー
- 回答日時:
LEADTOOLSは使っていませんので、具体的な解決策は提示できませんが。
>座標の左上(0,0)から離れれば離れるほど
スケールのズレが原因の典型的な現象ですね。
画像をトリミングするトリミング枠が表示されるって事ですので、プログラムから数値指定するのは画像のスケール基準であるところのピクセル指定であることは間違いないと思います。
※もし関数仕様が上記推測でなければ、以下はそれに従って読み替えてください。
画面上でクリックして得られるポイント(クリック位置x,yの点)は、当然コントロールの画面上のピクセルです。
画像を拡大/縮小表示しているのであれば、当然ながらそれらのクリックしたポイントと、対応する画像上のポイント(トリミング開始位置)は異なります。
早い話、一旦画像表示の拡大/縮小を解除して実寸表示にして、テストしてみてください。
おそらく希望通りの動作になります。
拡大/縮小表示する際には、拡縮率が120%であれば、クリックされたポイントのx,yそれぞれ1.2倍に、80%であれば0.8倍にと指定してやれば、トリミング枠は希望通りの位置にくると思います。
>クリックした地点より右下にずれてリージョンの枠が表示されてしまいます。
今現在、拡大表示されている状態ですかね、たぶん。
ご指摘ありがとうございます。
拡大縮小率を考慮してやると上手くいきました。
ただ、画像を表示領域の中央に表示する場合や、画像が表示領域より大きい場合には少し補正する必要がありました。
現在、LEADTOOLSはトライアル版でプログラム作成を始めたばかりなのですが、このあたりの操作はあくまで手動なのですね・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) Excel VBAでの右クリックのポップアップメニューの非表示方法は? 1 2023/04/12 17:03
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSファイルの編集?
-
C#で、画像の、指定した座標の...
-
エクセルVBAで画像を貼り付ける...
-
マルチディスプレイ環境のとき...
-
VBでデスクトップ上のアイコン...
-
uwscについて、同一の画像(仮...
-
UWSCで特定の文字をクリックす...
-
Unityでピクセル情報を取得する...
-
VCでの問題・・・
-
クリックした点を中止に拡大・縮小
-
ペイントの多ページに亘る情報...
-
自動運転の車線維持機能について
-
もしかして
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
CloseとDisposeの違い
-
VBAでループ内で使う変数名を可...
-
エクセルVBAで、MsgBox やInput...
-
Do~Loopした回数をカウントしたい
-
switch の範囲指定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで画像を貼り付ける...
-
Excel VBAで他アプリケーション...
-
C#で、画像の、指定した座標の...
-
外付ディスプレイで AutoHotkey...
-
uwscについて、同一の画像(仮...
-
VBでクリックイベントを発生さ...
-
UWSファイルの編集?
-
NoxPlayerとUWSCのadbの座標に...
-
VBAで ScreenToClient を使いたい
-
バナーにリンクを埋め込む方法
-
UWSCのCHKIMG関数について
-
マウスイベントが動かない
-
UWSC画像認識で座標の位置がず...
-
VBA HTML要素または文字の座標...
-
ピクチャーボックスのスケール...
-
画像の座標取得
-
LineTo,MoveToについて
-
puctureBoxの一部の色を変えた...
-
bitbltからの画像保存ができま...
-
マウスカーソルの移動
おすすめ情報