No.4ベストアンサー
- 回答日時:
作ってみました。
ドラッグ中の円の表示の仕方は単にドラッグ開始位置から半径を広げているだけなので、そこらへんは適当に修正してください。
Option Explicit
Dim sx As Integer
Dim sy As Integer
Dim px As Integer
Dim py As Integer
Private Sub Form_Load()
sx = -1
sy = -1
End Sub
Private Sub Pic1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
sx = X
sy = Y
px = -1
py = -1
End Sub
Private Sub Pic1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If sx = -1 Then Exit Sub
Pic1.DrawStyle = vbDot
Pic1.DrawMode = vbInvert
If px <> -1 Then
Pic1.Circle (sx, sy), Abs(px - sx) / 2, RGB(0, 0, 0)
End If
Pic1.Circle (sx, sy), Abs(X - sx) / 2, RGB(0, 0, 0)
px = X
py = Y
End Sub
Private Sub Pic1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Pic1.DrawStyle = vbSolid
Pic1.DrawMode = vbCopyPen
Pic1.Circle (sx, sy), Abs(X - sx) / 2, RGB(0, 0, 0)
sx = -1
sy = -1
End Sub
No.3
- 回答日時:
円が残るのは、サンプルプログラムの中で使っている変数のうち、CX,CY,RをDimし忘れているせいでは。
この回答への補足
ご回答ありがとうございます。
おっしゃる通り、Dimしたら軌跡は残らなくなりました。
でも、1つ円を書いた後に2つ目を描こうとすると、1つ目が消えてしまいます。
消えないようにできないのでしょうか?
No.2
- 回答日時:
まずPictureBoxの名前をPic1に変更
Backcolorを白にします。
途中の円を点線にするにはまだ出来ませんが途中の色を赤にして
完了すると黒にするやり方は以下でどうですか。
AX BY MouseDownで開始する座標
BX BY MouseMoveでドラッグ中のマウス座標
CX CY は円の中心
R 半径
MD 0 = 開始以前
1 = ドラッグ中
クリックにイベントを発生させるとうまくいかないのでMouseUpを使います
完成した円は別にデータとして記憶しないと別の作業で削除されます。
(この部分のプログラムは作成していません)
以下が私の作成してテストプログラムです。
Private Sub Form_Load()
MD = 0
AX = -1
AY = -1
End Sub
Private Sub Pic1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MD = 0 Then
AX = X
AY = Y
MD = 1
End If
End Sub
Private Sub Pic1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MD = 1 Then
Pic1.Circle (CX, CY), R, RGB(255, 255, 255)
BX = X
BY = Y
CX = (AX + BX) / 2
CY = (AY + BY) / 2
R = Sqr((CX - BX) ^ 2 + (CY - BY) ^ 2)
Pic1.Circle (CX, CY), R, RGB(255, 0, 0)
End If
End Sub
Private Sub Pic1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MD = 1 Then
Pic1.Circle (CX, CY), R, RGB(255, 255, 255)
BX = X
BY = Y
CX = (AX + BX) / 2
CY = (AY + BY) / 2
R = Sqr((CX - BX) ^ 2 + (CY - BY) ^ 2)
Pic1.Circle (CX, CY), R, RGB(0, 0, 0)
End If
MD = 0
AX = -1
AY = -1
End Sub
この回答への補足
ご回答ありがとうございます。
早速やってみましたが、うまくいきませんでした。
ドラッグしているときに描画させる円がずっと残って、軌跡ができてしまいます(ToT)
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Illustrator(イラストレーター) 「頂点で線分を伸ばす」作業がうまく行かない。 1 2022/09/09 10:19
- 美術・アート 絵をかくときのタッチの種類、こういうのは正式名称で何という? 1 2022/04/20 13:22
- C言語・C++・C# 必ずyou bet と表示されます 2 2023/07/28 22:19
- 日本語 助詞「は」と「が」の使い方の違いを教える簡単な方法 21 2022/08/16 08:06
- その他(ブラウザ) テキストを入れるときの縦線の点滅がそれ以外のブラウザ上にも表れます。 1 2022/07/29 21:55
- 芸術学 透視図法の消失点は、どこに? 1 2023/06/14 00:09
- その他(ブラウザ) Twitterの「返信をさらに表示」 ボタンの後ろに隠れているツイートを常に表示 1 2023/08/04 12:20
- CAD・DTP AUTO CAD操作方法 半円の書き方 1 2022/06/20 09:16
- 美術・アート トレパク疑惑をかけられにくくするには ここ最近いわゆるトレパク警察のいいがかりがが厳しくなったようで 1 2023/08/21 09:59
- Visual Basic(VBA) Edge操作のアプリが例外発生に 1 2023/03/12 21:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
ワード上Shapeの位置情報を統一...
-
エクセルである点からの距離で...
-
閉図形の座標の配列が右回りか...
-
3次元空間上の2つの座標から...
-
始点、終点の二つの座標と半径...
-
直線上にある点の座標の求め方
-
【C#】アクションゲームの地...
-
エクセルで回転する座標の出し方
-
位置座標からx軸となす角度(ラ...
-
(C言語)スキャンライン法によ...
-
重力の計算
-
C言語での円描写
-
タッチパッドのタッチ座標取得
-
座標
-
バイキュービック補間のプログラム
-
C言語 配列で座標
-
図形が重なりあっているかどうか
-
Excel VBAでマウス移動&ダブル...
-
C#で4つの座標から新しい画像を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
始点、終点の二つの座標と半径...
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
ワード上Shapeの位置情報を統一...
-
以下のプログラムは重心を求め...
-
C言語 配列で座標
-
ダイアログ内コントロールの位...
-
ガウシアンフィルタのCプログラム
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
シーケンサー(PLC?)で制...
-
VB6のPrinter.ScaleWidth に対...
-
多角形の内部かどうか判定する方法
-
y=x^2の座標をプロットするプロ...
-
直線上にある点の座標の求め方
-
ピクチャボックスの座標取得
おすすめ情報