• ベストアンサー

SCALEの使い方教えてください

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

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.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

toko703
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.2

フォームにピクチャーボックスを貼りつけてスケールを定義するとそのピクチャーの原点を(0,0)にできますが、任意の場所を原点にするならば補正値としてhoseix, hoseiyの二つの変数を用意する必要があります。 この二つの変数に補正値を入れて計算に与えれば形の上で原点を求める事が出来ます。 マウスダウンのプロシージャでx、yを求め、引き算して補正値を求めます。 例えば画面の左上が(0,0)だったら、X,Yの場所を(0,0)にするために計算すれば良いわけです。 あとは補正の変数に入れて計算して表示すれば良いわけです。

toko703
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

私も力不足ですが、Scaleを使っている下記サイトが見つかりました。参考になりませんか。見当違いの節は済みません。 http://www.nucba.ac.jp/~tkenichi/Lecture/1999/CompGeom/vol6.html 上記の内容を少し判りやすく、上手く動かない原因らしい点を修復しますと (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イベントなどしかなく、しかしこれは使えず、難しいのではないでしょうか。 良い回答を期待します。

toko703
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 偏微分について

    偏微分をこの前習ったのですが、いまいちよく分かりません><どなたか手助けお願いいたします。 位置ベクトルrの独立変数はデカルト座標(x,y,z)で、 Δr/Δx=lim {r(x+Δx,y,z)-r(x,y,z)}/ Δx と、これでよいのでしょうか??(極限はΔx→0です) またデカルト座標(x,y,z)、極座標(r,θ,Φ)について、デカルト座標を極座標の関数とし、または極座標をデカルト座標の関数として偏微分を行うときに、 Δx/Δθ=rcosθ×cosΦ Δy/ΔΦ=rsinθ×cosΦ Δz/Δr=cosθ でよいのでしょうか?? あと、これの逆の Δr/Δy,Δθ/Δz,ΔΦ/Δx のやり方が分かりません。 どなたかよろしくお願いいたします。

  • 円の中心をだしたい

    分かっている3点の座標があるとき その3点を通る円の中心座標の計算式を教えていただきたい 3点の座標がこれとします P1---> x1,y1 P2---> x2,y3 P3---> x2,y3 円の中心の座標は P0---> x0,y0 P0を求めたいです

  • 2点の座標がある座標を中心に回転した場合の座標は?

    ある2点の座標 P1(x1,y1), Q1(x2,y2) が ある座標(X,Y)を中心に回転し、点 P2(x3,y3) Q2(x4,y4) に移動した場合、回転の中心となった座標(X,Y)を求めるにはどうしたら良いでしょうか。

  • 偏微分の問題

    物理学基礎論で、偏微分を習いましたがよく分かりません>< 今朝、数学のジャンルで質問させていただきましたが、質問の意味が分からないと言われたので、問題ごとこちらに質問させていただきます。 1、次の偏微分を求めよ。ただし位置ベクトルrの独立変数はデカルト座標(x,y,z)である。 ∂r/∂x これに対し私の答えは・・・ Δr/Δx=lim {r(x+Δx,y,z)-r(x,y,z)}/ Δx と、これでよいのでしょうか??(極限はΔx→0です) 2、次の偏微分を求めよ。ただし()-()ではデカルト座標xyzを極座標rθΦの関数とし、()-()では極座標rθΦをデカルト座標xyzの関数として微分を行うこと。 ()Δx/Δθ=rcosθ×cosΦ ()Δy/ΔΦ=rsinθ×cosΦ ()Δz/Δr=cosθ これでよいでしょうか・・・?? ()Δr/Δy=y/√(x^2+y^2+z^2)=y/r ()Δθ/Δz ()ΔΦ/Δx ()()がまったく分かりません^^;たとえば、()ではtanθを微分したらよいのでしょうか?? どなたかよろしくお願いいたします。

  • VBのデータの記録の仕方を教えて下さい!!

    僕はVBを使ってフォーム内でマウスをクリックした点の、X座標、Y座標を測定するプログラムを作りました。 その座標を記録して残したいのですがやり方がわかりません。 どういう方法でも構いませんのでわかる方、教えて下さい。 僕は超初心者なので基本的なところから丁寧に教えていただけると助かります。

  • 円の方程式

    (1)両座標軸(x軸、y軸)に接して、点(-2、1)を通る円を求めよ (2)2点(-2、3)(3、4)を通り、中心が直線y=-x+2上にある円 (3)両座標軸に接し、中心がy~2x+1上にある円 簡単かと思いますが、回答お願いします

  • 偏微分

    次の偏微分を求めよ。ただし(1)-(3)ではデカルト座標xyzを極座標rθΦの関数とし、(4)-(6)では極座標rθΦをデカルト座標xyzの関数として微分を行うこと。 (1)Δx/Δθ=rcosθ×cosΦ (2)Δy/ΔΦ=rsinθ×cosΦ (3)Δz/Δr=cosθ これでよいでしょうか・・・?? (4)Δr/Δy=y/√(x^2+y^2+z^2)=y/r (5)Δθ/Δz (6)ΔΦ/Δx (5)(6)がまったく分かりません^^;たとえば、(5)ではtanθを微分したらよいのでしょうか?? よろしくお願いします。

  • 3点の座標(X,Y)より円の中心座標を出す計算式…

    3点の座標(X,Y)より円の中心座標を出す計算式をお教え頂けませんでしょうか? 今現在、投影機につながっているコンピュータで円の外周より3点の座標を 出しておりますが、3点の座標(x、y)から手計算で円の中心の座標を求める計算式があればお教え頂けませんでしょうか?宜しくお願い致します。 すみません、文章が変でした。投影機で丸いワークの外周3点の座標を拾い、 付属のコンピュータで円の中心座標を求めています。そのコンピュータが行っている計算を自分でできないか?という質問です。

  • 位置情報に関する仕様を決めたい(要素・属性)

    自作プログラムから利用するXMLの書き方を考えているのですが、 位置情報を表す要素と属性の書き方をどのように割り振るべきか悩んでいます。 なるべく一般的な記法を採用したいのですがなにか基準などあるのでしょうか? 一つの要素に含まれる内容は次のようなものです ・アイテムのx, y座標 ・アイテムの角度 ・アイテムの回転軸(中心点の x, y座標) <item id="123"> <position> <x>100</x> <y>200</y> </position> <rotation> <x>50</x> <y>100</y> <angle>90</angle> </rotation> </item> 全て要素で書くと上のような感じになると思いますが、 属性を入れて「<position x="100" y="200" />」と書くのも良さそうに思えます。 今後回転速度や移動速度などの要素が拡張されるかもしれません。 また、「x」や「y」などとせずに「posX」「rotX」のように独自のものを使用したほうがいいのかもしれません。 こういったルールは何を基準に決めて行ったらいいのでしょうか? 自分ならこうするという意見もありましたら教えて下さい。

    • ベストアンサー
    • XML
  • 三角形の外接円の中心座標を求めるプログラム

    三点の座標(x1,y1),(x2,y2),(x3,y3)が与えられたときに、三角形の外接円の中心座標と半径を求めるプログラムが欲しいです。 垂直二等分線の交点を求めるやり方は既に知っているのですが、連立方程式になってしまいます。 ですので出来ればこれを一発で求められる連立じゃない式が欲しいのですが、ご存じないでしょうか? x = 何とか y = 何とか みたいな感じです。 Javaでやろうとしていますが、計算式さえわかれば自分で書けると思うので、中心座標のx,yを求める式を教えて下さい。 過去質問を探してみましたが、みんな連立方程式で解けば良いとおっしゃっていまして…

このQ&Aのポイント
  • アルバイトを退職した際に給料の振込対応が無いと言われましたが、体調不良による無断欠勤が原因でした。
  • 現在も体調が回復せず、制服の返却もできない状況です。
  • 給料は諦めるしかないのか、現金書留で送ってもらうようお願いすることはできるのか悩んでいます。
回答を見る