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つの座標から...
-
空間上の二点を結ぶ直線上に任...
-
一番近い点を見つけたい。
-
ビットマップ画像の座標を小数...
-
Excel VBA で自在に図形を変化...
-
エクセルシート上のマウスポイ...
-
碁盤目の経路数
-
(C言語)スキャンライン法によ...
-
始点、終点の二つの座標と半径...
-
6点からの楕円の近似計算(最...
-
円弧の描画について
-
画像回転について
-
マインクラフト(pc版)で座標...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マインクラフト(pc版)で座標...
-
グラフの交点の求め方(Excel)
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
求積表の計算方法
-
ダイアログ内コントロールの位...
-
空間上の二点を結ぶ直線上に任...
-
始点、終点の二つの座標と半径...
-
図形が重なりあっているかどうか
-
ワード上Shapeの位置情報を統一...
-
以下のプログラムは重心を求め...
-
シーケンサー(PLC?)で制...
-
ピクチャボックスの座標取得
-
多角形の内部かどうか判定する方法
-
Excel VBA で自在に図形を変化...
-
選択範囲の座標値の抽出
-
座標を持った平面範囲に座標を...
-
VBで、開いているExcelシートの...
おすすめ情報