こんかいVBを初めて扱っています。
マウスのドラッグで範囲を選択し画像を取得してPictureBox2 に表示
ということをVB6で作成しようとしています。
参考になりそうなサイトは見つけたのですが、
http://hanatyan.sakura.ne.jp/dotnet/zu06.htm
VBのバージョンが違うのでコンパイルは通りません。
関数の名前が変わっているから出来ないのか、
同じ機能は無いから違う方法を取らなければいけないのか?
わからないことだらけで、ハマっています。
もし、何でも良いのでご存知の方がいらっしゃいましたら、
何卒、ご教授宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
課題か何かですか?
選択範囲を表示するところだけですけど…。
参考にして画像を取得する部分と表示する部分はご自分で考えてください。
Formを1つ作ってそのフォームにPictureBoxを一つ貼り付けてください。
Option Explicit
Dim sPosX As Single
Dim sPosY As Single
Dim ePosX As Single
Dim ePosY As Single
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button And vbLeftButton) <> 0 Then
sPosX = X
sPosY = Y
ePosX = X
ePosY = Y
End If
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button And vbLeftButton) <> 0 Then
Picture1.DrawStyle = 2
Picture1.Cls
Picture1.Line (sPosX, sPosY)-(ePosX, ePosY), , B
ePosX = X
ePosY = Y
End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button And vbLeftButton) <> 0 Then
Picture1.DrawStyle = 0
Picture1.Cls
Picture1.Line (sPosX, sPosY)-(ePosX, ePosY), , B
End If
End Sub
参考意見ありがとうございます。
お恥ずかしいのですが、課題ではなく仕事です。
範囲指定の枠が表示出来ました!
しかし、範囲指定するために画像の中をクリックすると
画像が消えてしまいます。
現在対応中です。
No.2
- 回答日時:
VB6だけでやろうとすると結構大変です
というのも VB6には画像のブロック転送の機能がありません
したがってピクチャーボックスの画素をGetPixel/SetPixelをつかってループで処理するといった方法をとらないといけにからです
andy_kun氏のルーチンを参考にして 指示されて矩形をピクセル単位でアクセスしましょう
通常VB6で扱うグラフィックスの単位は TWIPです
これをPixel単位にするにはScreen.TwipsPerPiexlX/Screen.TwipsPerPiexlYなどから算出します
nPosX = sPosX / Screen.TwipsPerPiexlX
といった具合です
別の方法として ピクチャーボックスのScaleModeを3のvbPixelsにしておくとMouseMove/MouseDown/MouseUpなどで扱うX/Yはピクセル単位になります
WinAPIのScreenToClient/ClientToScreen/BitPltなどを使うと画像のブロック転送が可能です
また転送先のピクチャーボックスのAutoRedrawプロパティをTrueにしておくことも大切です
この回答への補足
BitPltを使用したのですが、期待通りのブロック転送にはなりませんでした。
ScreenToClient/ClientToScreenは調べているのですが、
使い方が良くわからず、試せていません。
宜しければご教授願います。
宜しくお願い致します。
回答ありがとうございます。
VB6だと大変なんですかぁ・・・。
現在、andy_kun氏のルーチンを参考に範囲指定の対応中です。
その後、redfox63氏の回答を参考に完成させたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- その他(コンピューター・テクノロジー) マウスで文章をドラッグしてコピーする際に、横一列全てが選択されるのですが、 2 2023/06/17 18:05
- 画像編集・動画編集・音楽編集 WIN10で「切り取り&スケッチ」が上手く使えません。 1 2022/09/01 22:56
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- その他(Microsoft Office) 選択行の列範囲に二重線を引く 3 2022/06/08 12:21
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- その他(ブラウザ) Mycrosoft Edge の「コレクション」に、画像とテキストを追加したい 2 2022/05/28 11:10
- その他(セキュリティ) 特定のWEBページのフリーズ AMAZONサイト PC側? ネットワーク? サイトに問題? 1 2023/01/30 16:23
- Illustrator(イラストレーター) Illustrator アンカーポイント選択について 3 2023/01/30 12:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像処理について。(移動)
-
画像をランダムに表示させたい...
-
画像処理
-
ボールが壁に当たって跳ね返る...
-
[vb.net] 起動したFrom2を閉じ...
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
-
他のフォームから別のフォーム...
-
GetNextWindowがDLLファイルUse...
-
[Excel2000]auto_closeを止めさ...
-
アクセスできない保護レベルエ...
-
エクセルVBAでテキストボッ...
-
comboboxのクリックイベントに...
-
VB.NETでのイベントの途中終了
-
ユーザーフォームへのデータ入...
-
VBAのユーザーフォームで、テキ...
-
基本的な質問で本当に申し訳あ...
-
subsequentとnextの違いってな...
-
VBSのプログラム
-
条件に該当したテキストボック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マウスポインタの変更
-
Matlabでsin波を使って矩形波を...
-
SavePictureで保存できない
-
FlexGridで文字色を変更。
-
(VB)ピクチャボックスに表示し...
-
画像処理について。(移動)
-
ボールが壁に当たって跳ね返る...
-
画像処理
-
画像をランダムに表示させたい...
-
VBによる回帰直線のプログラム
-
VBでbmpのビットを抜出す
-
Matlab/SimulinkのChirp信号に...
-
SCALEの使い方教えてください
-
PictureBoxでのアニメーション...
-
画像ファイルの高さと幅の取得
-
リソースファイルの選択
-
picture boxの画像をimageに上...
-
Picture box の サイズを変更
-
消す軌跡と残す軌跡
-
VB6でマウスのドラッグで範囲を...
おすすめ情報