|
分類:[C#]
VC#2010を使い始めたばかりの初心者である私は、ボタンを押すとピクチャボックス上で動くマウスの座標に●を描き、軌跡を描きたいと考えています。エラーは吐かれず、コンパイルはうまくいっているのですが、なぜかマウスを動かしても一つも●がピクチャボックス上がひとつも表示されませんでした。いくつかのサイトを回ってもなかなか解決できずに行き詰ってしまったので投稿させていただきました。
間違っている個所のご指摘やプログラムの添削を行っていただけると幸いです。以下に自分が作製したプログラムを記載します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int index = 0;
int Max = 0;
int a = 0;
int[] x = new int[100];
int[] y = new int[100];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//フォーム上の座標 (10, 20) にマウスポインタを移動する
//クライアント座標を画面座標に変換する
System.Drawing.Point mp = pictureBox1.PointToScreen( new System.Drawing.Point(300, 200));
//マウスポインタの位置を設定する
System.Windows.Forms.Cursor.Position = mp;
while (a == 0)
{
Mousechase();
Drawpoint();
//一秒間(1000ミリ秒)停止する
System.Threading.Thread.Sleep(1000);
}
}
private void Mousechase()//マウスの位置を格納する
{
//ピクチャボックス上の座標でマウスポインタの位置を取得する
//画面座標でマウスポインタの位置を取得する
System.Drawing.Point sp = System.Windows.Forms.Cursor.Position;
//画面座標をクライアント座標に変換する
System.Drawing.Point cp = pictureBox1.PointToClient(sp);
//X座標を取得する
x[index]= cp.X;
//Y座標を取得する
y[index] = cp.Y;
index++;
Max = index;
}
private void Drawpoint()
{
for (int b = 0; b <=Max ; b++)
{
//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics u = Graphics.FromImage(canvas);
//フォントオブジェクトの作成
Font fnt1 = new Font("MS UI Gothic", 5);
//●を、青色で表示
u.DrawString("●", fnt1, Brushes.Blue, y[index] - 2, x[index]- 2);
//PictureBox1に表示する
pictureBox1.Image = canvas;
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
初めての投稿なので見にくい部分が多く申し訳ないのですが、よろしくお願い致します。
|