• 締切済み

Picture1に二つの円

今、あせってます pictureboxに動く円と円を書き込みたい のですが動く円はできました。 ですが1度に二つの円を記入できずに 困ってます。 picture1.cls picture1.cirecre(12000,200),200

みんなの回答

回答No.5

最終的にこの円がどのような図形になるのかによっても変わってきますが、 単純に固定された円と動く円だけなら Private x As Long Private y As Long Private sx As Integer Private sy As Integer Private Sub Form_Load()   Picture1.AutoRedraw = True   Picture1.Circle (1000, 1000), 200   Picture1.AutoRedraw = False   sx = 1: sy = 1   x = 0: y = 0 End Sub Private Sub Timer1_Timer()   If (x + sx * 100 > Picture1.Width - 200) Then     sx = -1   ElseIf (x + sx * 100 < 200) Then     sx = 1   End If   If (y + sy * 100 >= Picture1.Height - 200) Then     sy = -1   ElseIf (y + sy * 100 < 200) Then     sy = 1   End If   x = x + sx * 100   y = y + sy * 100   Picture1.Cls   Picture1.Circle (x, y), 200 End Sub こんな方法でもできると思います。 (跳ね返りが微妙にずれてますがその辺は質問と関係無い所なのでご容赦を) (固定の円はAutoRedraw=Trueで動く円はAutoRedraw=Falseで線画する。) 複雑な線画や絵(ビットマップなど)を動かすようなら API関数のBitBltを使用するようになるのではないでしょうか? 2つとも動く円なのでしょうか?(2つの円を1度に動かせないと言う事?)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

#3です。#3は素っ気無いので 円の周りを円が回るようにして見ました。 タイマーのインタバルを500ぐらいで。 Private Sub Timer1_Timer() Static i i = i + 5 Picture1.Cls blt2 i End Sub Private Sub blt2(i) pai = 3.141592 R1 = 800 R2 = 500 r = R1 + R2 a = 3000 b = 2000 Picture1.Circle (a, b), R1 s = i * pai / 180 PX = a + r * Cos(s) PY = b + r * Sin(s) Picture1.Circle (PX, PY), R2, RGB(0, 255, 255) End Sub

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

下記を実行して見てください。Timerコントロールを貼りつける。Timerのインタバルは1000(1秒)でやりました。1つの円が動きましたが、こんなことで良いのやら、お遊びで自信なし。 Private Sub blt(i) Picture1.Circle (1600, 10 * 20 + 500), 500 Picture1.Circle (600, i * 20 + 500), 500, RGB(0, 255, 255) End Sub Private Sub Timer1_Timer() Static i i = i + 10 Picture1.Cls blt i End Sub

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

昔ブロック崩しやインベーダーゲームを作ってました。 その時のアルゴリズムはXの位置を消して、増加率を加算してキャラを表示する方法を取ってました。 CLSは簡単ですけど画面がちらついて見にくいし、他の表示もしないといけないので処理が重くなります。 移動する物だけ消して→移動して→表示するを繰り返した方が良いと思います。

  • paspas
  • ベストアンサー率52% (47/90)
回答No.1

 二つの円がかけないのは、動く円を描画するときにCLSで消しているからでしょうか?  動く円を消す際、背景色で同一場所に円を描くようにすると、画面を消さなくてすむので、複数の円を描けるのではないでしょうか。

関連するQ&A

  • ピクチャーボックス上に描いた円をうまく保存できません

    1.予めピクチャーボックスに画像を表示しておき 2.そのピクチャーボックス内に円を描き↓ Picture1.Circle (10, 10), 500 3.それら両方(1で予め表示しておいた画像と、2で描いた円)を保存しようと↓ SavePicture Picture1.Image, App.Path & "\Test.bmp" とすると、1で予め表示しておいた画像だけが保存され、2で描いた円が保存されません。 両方とも(1で予め表示しておいた画像の上に2で描いた円が表示されるように)保存したいのですが、どのようにすればよいでしょうか。 できれば具体的にサンプルコードなどをご教授いただけると大変ありがたく存じます。 恐れ入りますが、何卒よろしくお願いいたします(VB6.0)

  • VB.NET ピクチャーボックスのImageの一部をクリップボードにコピー

    Picturebox1.Image = New Bitmap(Picturebox1.Width, Picturebox1.Height) Dim g As Graphics = Graphics.FromImage(Picturebox1.Image) これ以降 g.DrawLine 等で描画を行っています そして、ピクチャーボックスの一部の領域(矩形)を指定して クリップボードにコピーしたいのですがどうしたらいいでしょうか よろしくお願いします 他のピクチャーボックスにその一部をコピーできるだけでもいいのですが

  • ピクチャボックスのクリックイベント

    ピクチャボックスのクリックイベント Visual C#でトランプゲームを作っているのですが this.PB = new System.Windows.Forms.PictureBox[54]; ↑のようにピクチャボックスの配列作ったのですが それぞれのクリックイベントを作りたいのですが、それがどうしても分かりません たとえばPB[30]がクリックされたらPB[30]の画像を他のピクチャボックスに移すなど このようなことをするにはどうすればいいですか?

  • ピクチャーボックスの画像が欠けてしまいます。

    VB.NETとWinXPなのですが、 コマンドボタンを押して、ファイルダイアログボックスを開いて jpgファイルを指定するとピクチャーボックスにその 画像が表示されるようなものをつくっているのですが、 ピクチャーボックスの上に出るファイルダイアログボックスが重なっていた部分だけ画像が欠けてしまいます。 Picturebox1.Refresh()かなと思って試してみたのですが、今度は全部消えてしまいました。 良い方法があったら教えて頂きたいです。 よろしくお願いします。

  • ピクチャボックスの座標取得

    Microsoft Visual Studio 2008のスマートデバイス用で、PDA用のプログラミングを開発しています。 フォーム上にピクチャボックスを貼りつけ、画像表示をできるようにしています で、やりたいことは・・ Private Sub PictureBox1_MouseUp(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles PictureBox1.MouseUp 'ピクチャボックスの座標を表示させる     End Sub Private pos As Pointで宣言しておき、 pos.X = e.X pos.Y = e.Y でやると、どうも、フォームの座標が取得されてしまうようです ピクチャの画像は拡大・縮小をできるようにしてあるため、フォーム座標=ピクチャ座標にはなりません ピクチャボックスの座標を取得するにはどのようにしたらよいのか、ご教授願います

  • PictureBoxでのアニメーションのちらつき防止

    タイマーを使って,以下のような感じで PictureBox にCircleを動かす簡単なアニメーションを作成しているのですが,Timer.Interval=10で描画がかなりちらついてしまいます. この場合,ちらつきを無くすような方法はありませんでしょうか.よろしくお願いします. Private Sub Timer1_Timer() Picture1.Cls Picture1.Circle (x,y), 30, vbRed x = x + 1 y = y + 1 End Sub

  • VB2010で、ピクチャーボックスに描いた円を消す方法を教えていただけ

    VB2010で、ピクチャーボックスに描いた円を消す方法を教えていただけませんでしょうか。 添付図のようなグラフを描いています。 マウスを動かすとカーソルもグラフライン上を移動するのですが、軌跡が残ってしまいます。 以下のコードに、karg.clear(textbox1.backcolor)と記述すると、グラフ線まで消えてしまいます。 カーソルの軌跡のみを消したいのですが、どなたか方法を御存じないでしょうか。 教えてください。よろしくお願いします。 'カーソルを描く Dim myPen As New Pen(Color.Green, 2) 'カーソルの色、太さ Dim myMatrix As New Matrix Dim karg As Graphics = Me.PictureBox1.CreateGraphics karg.Clear() Y = PsizeY / GsizeY * Me.TextBox4.Text karg.DrawEllipse(myPen, X - 5, Y + 5, 10, 10) myMatrix.Translate(0, PsizeY) '平行移動(ピクチャーボックスの高さ分,下へ平行移動) karg.Transform = myMatrix

  • フォームのピクチャーボックスの内容の退避

    動的に変わるピクチャーボックスの内容を以下の配列変数に設定したいのです。 dim Pct(X) as picturebox set pct(X) = form1.picture1 同じピクチャーボックスを表示したい場合は、以下のように変数から画面に設定したいのです。 set form1.picture1 = pict(X) が、退避しているはずなのに、全てがおなじピクチャーになってしまいます。 そんなことってありますか? 私が間違っているところがあれば、教えてください。 ピクチャーの内容は、VBからExcelのグラフを編集した後、クリップボード経由でピクチャーボックスに貼り付けたものです。

  • VB6.0にて、ワールド変換(ピクチャーボックスの左下を原点にする)を

    VB6.0にて、ワールド変換(ピクチャーボックスの左下を原点にする)をしたいのですが、 下記のコードを記述するとエラーとなります。 どこが駄目なのかわかりませんので、どなたか教えていただけませんでしょうか? お手数をおかけしますがどうぞよろしくお願いします。 PictureBox1のGraphicsオブジェクトを取得 Dim g As Graphics = Form1.PictureBox1.CreateGraphics() g.TranslateTransform(0, Form1.picturebox1.Height - 1) g.ScaleTransform(1, -1) g.Dispose()

  • windowプログラム ピクチャーコントロールに円描画

    タイトルどおりにしたいのですが、どうすればいいのでしょうか? フォームとピクチャーコントロールがあり、 ピクチャーコントロールにもクラスを作成してあります。 円はArcを使ってかければいいなと思っております よろしくお願いします