アプリ版:「スタンプのみでお礼する」機能のリリースについて

宜しくお願いします。
以前座標系のSCALEの使い方で質問させて頂きましたが、
どうしても使い方が分かりません。
Pictureの中をマウスクリックしたらそのポジションをデカルト座標の中心点X0Y0にしたいのですが、色々考えたのですがどうしても出来ません。教えて下さい。
マウスも1:1で動かしたいのですが。。。
宜しくお願いします。

A 回答 (3件)

Private Sub Form_Load()


With Picture1
.ScaleWidth = Abs(ScaleWidth)
.ScaleHeight = -Abs(.ScaleHeight)
End With
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
With Picture1
.ScaleLeft = -Abs(.ScaleLeft - X)
.ScaleTop = Abs(.ScaleTop - Y)
.ScaleWidth = Abs(ScaleWidth)
.ScaleHeight = -Abs(.ScaleHeight)
Picture1.Circle (0, 0), 10
End With
End Sub
    • good
    • 0
この回答へのお礼

有難う御座いました。参考にさせて頂き、ほぼ希望通りのモノが実行することが出来ました。DOSのC言語もカジリましたが、VBは便利な分だけ、難解な部分も多く毎回アタマを抱えて居ります。なるべく考えた末質問するようにしてますが、毎回快く解答を下さる皆様に感謝と畏敬の念を感じます。有難う御座いました。

お礼日時:2003/08/13 19:30

フォームにピクチャーボックスを貼りつけてスケールを定義するとそのピクチャーの原点を(0,0)にできますが、任意の場所を原点にするならば補正値としてhoseix,


hoseiyの二つの変数を用意する必要があります。
この二つの変数に補正値を入れて計算に与えれば形の上で原点を求める事が出来ます。
マウスダウンのプロシージャでx、yを求め、引き算して補正値を求めます。
例えば画面の左上が(0,0)だったら、X,Yの場所を(0,0)にするために計算すれば良いわけです。
あとは補正の変数に入れて計算して表示すれば良いわけです。
    • good
    • 0
この回答へのお礼

情報を有難う御座いました。
自分でもいろいろやってみましたが、しかたなく「教えて」に投稿した次第です。皆様のご指導を参考にさせて頂きます。有難う御座いました。

お礼日時:2003/08/12 21:04

私も力不足ですが、Scaleを使っている下記サイトが見つかりました。

参考になりませんか。見当違いの節は済みません。
http://www.nucba.ac.jp/~tkenichi/Lecture/1999/Co …
上記の内容を少し判りやすく、上手く動かない原因らしい点を修復しますと
(1)Formにリストボックス1、リストボックス2を貼りつける。
またコマンドボタンを貼りつける。
(2)Form_Loadイベントに
Private Sub Form_Load()
Dim m(10), n(10)
m(0) = 1
m(1) = 2
m(2) = 3
m(3) = 5
m(4) = 7
n(0) = 2
n(1) = 3
n(2) = 4
n(3) = 6
n(4) = 8
Pi = 3.1415926536
Picture1.Scale (-1, 1)-(1, -1)
For i = 0 To 4
List1.AddItem m(i) ' ここで List1 に配列 m の値を追加している
List2.AddItem n(i)
Next
List1.ListIndex = 0 ' デフォルトで選択されるものを設定
List2.ListIndex = 0
Picture1.AutoRedraw = True
' 画像をファイルに保存する(後で行う)ためのおまじない
End Sub
(3)そしてコマンドボタンのClickイベントに
Private Sub Command1_Click()
mm = List1.List(List1.ListIndex)
nn = List2.List(List2.ListIndex)
Picture1.PSet (1, 0)
Pi = 3.1415926536
For t = 0 To 400
Picture1.Line -(Cos(2 * Pi * mm * t / 400), Sin(2 * Pi * nn * t / 400))
Next
End Sub
を入れる。
(4)これを実行するとPictureBox内にリサジュー図形が書かれます。(テスト済み)
この Picture1.Scale (-1, 1)-(1, -1)の1の部分を
マウスのポイントにより座標原点に自動設定したいと言うことでしょうか。PictureBoxのマウスのイベントでマウス位置x、yを返すのは、MouseMoveイベントなどしかなく、しかしこれは使えず、難しいのではないでしょうか。
良い回答を期待します。
    • good
    • 0
この回答へのお礼

情報を有難う御座いました。
自分でもいろいろやってみましたが、しかたなく「教えて」に投稿した次第です。皆様のご指導を参考にさせて頂きます。有難う御座いました。

お礼日時:2003/08/12 21:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!