- ベストアンサー
VB6でマウスのドラッグで範囲を選択し画像を取得
こんかいVBを初めて扱っています。 マウスのドラッグで範囲を選択し画像を取得してPictureBox2 に表示 ということをVB6で作成しようとしています。 参考になりそうなサイトは見つけたのですが、 http://hanatyan.sakura.ne.jp/dotnet/zu06.htm VBのバージョンが違うのでコンパイルは通りません。 関数の名前が変わっているから出来ないのか、 同じ機能は無いから違う方法を取らなければいけないのか? わからないことだらけで、ハマっています。 もし、何でも良いのでご存知の方がいらっしゃいましたら、 何卒、ご教授宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
課題か何かですか? 選択範囲を表示するところだけですけど…。 参考にして画像を取得する部分と表示する部分はご自分で考えてください。 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
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
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にしておくことも大切です
お礼
回答ありがとうございます。 VB6だと大変なんですかぁ・・・。 現在、andy_kun氏のルーチンを参考に範囲指定の対応中です。 その後、redfox63氏の回答を参考に完成させたいと思います。
補足
BitPltを使用したのですが、期待通りのブロック転送にはなりませんでした。 ScreenToClient/ClientToScreenは調べているのですが、 使い方が良くわからず、試せていません。 宜しければご教授願います。 宜しくお願い致します。
お礼
参考意見ありがとうございます。 お恥ずかしいのですが、課題ではなく仕事です。 範囲指定の枠が表示出来ました! しかし、範囲指定するために画像の中をクリックすると 画像が消えてしまいます。 現在対応中です。
補足
ありがとうございました。 対応は完了し、画像が消えずに枠を表示することが出来ました。