
こんかい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ランキング
-
Picture1.Printとしてもpicture...
-
ボールが壁に当たって跳ね返る...
-
文字間の幅の設定
-
Matlab/SimulinkのChirp信号に...
-
ピクチャーボックスの画像を印...
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
-
アクセスできない保護レベルエ...
-
ExcelのVBAで文章にある複数の...
-
エクセルVBAでテキストボッ...
-
【VB.NET】テキストボックスに...
-
チェックボックスを操作できな...
-
VB.NETでのイベントの途中終了
-
VBAで入力数値について
-
パーソナルXLSBのfuctionを呼び...
-
レコードセットにnullの場合
-
VB2010 TextBoxの数字の表示...
-
VBでの入力値制限について
-
ユーザーフォームへのデータ入...
-
vc++のAPI(dll)の引数をVBAでう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ピッ、ってアルファベットでど...
-
画像処理
-
画像をランダムに表示させたい...
-
FlexGridで文字色を変更。
-
[ASP]小数点第2位以下をカット!
-
ピクチャーボックスの画像を印...
-
Matlab/SimulinkのChirp信号に...
-
Picture box の サイズを変更
-
EmEditor使い方
-
文字間の幅の設定
-
ペイントソフトの作成方法
-
SCALEの使い方教えてください
-
(VB)ピクチャボックスに表示し...
-
Matlabでsin波を使って矩形波を...
-
もぐらたたきのプログラミング
-
execlp関数で「grep -lr hoe /h...
-
label画像の縮小と再表示
-
プログラムにくわしいかた教え...
-
ボールが壁に当たって跳ね返る...
-
Access2000 VBAについて質問です。
おすすめ情報