|
分類:[C#]
visual C#にて筆圧感知のごとくマウスがとどまる時間に比例して線が太くなるプログラムを作りたいと考えています。
現在のコードにどのようなコードを足せばこれが実現できるでしょうか。
どなたかご教授お願いいたします。
現在できているコードは
-------------------------
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;
using System.Diagnostics;
namespace ボタンが移動するプログラム_いじくれるバージョン
{
public partial class Form1 : Form
{
//時間経過をはかるためのクラス
Stopwatch myStopWatch = new Stopwatch();
//スタート・ストップボタン用
Boolean sw = false;
int count=0;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
//label1にスタートから現在までの時間を表示させる
label1.Text = myStopWatch.Elapsed.ToString();
}
private void timer2_Tick(object sender, EventArgs e)
{
label2.Text = myStopWatch.Elapsed.ToString();
}
private void timer3_Tick(object sender, EventArgs e)
{
label3.Text = myStopWatch.Elapsed.ToString();
}
private void timer4_Tick_1(object sender, EventArgs e)
{
label4.Text = myStopWatch.Elapsed.ToString();
}
private void timer5_Tick_1(object sender, EventArgs e)
{
label5.Text = myStopWatch.Elapsed.ToString();
}
Graphics grfx;
int start = 1;
int startX;
int startY;
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(Screen.PrimaryScreen.WorkingArea.Width,
Screen.PrimaryScreen.WorkingArea.Height);
grfx = Graphics.FromImage(pictureBox1.Image);
timer1.Start();
//timer2.Start();
//timer3.Start();
this.Text = "実験";
//ラベルのプロパティ
this.label1.Text = myStopWatch.Elapsed.ToString();
this.label1.BackColor = Color.White;
this.label1.Font = new System.Drawing.Font("MS UI Gothic", 15);
this.label1.BorderStyle = BorderStyle.Fixed3D;
this.label1.Location = new Point(50, 50);
this.label1.Size = new Size(200, 25);
this.label1.TextAlign = ContentAlignment.TopCenter;
this.label1.AutoSize = false;
this.label2.Text = myStopWatch.Elapsed.ToString();
this.label2.BackColor = Color.White;
this.label2.Font = new System.Drawing.Font("MS UI Gothic", 15);
this.label2.BorderStyle = BorderStyle.Fixed3D;
this.label2.Location = new Point(50, 75);
this.label2.Size = new Size(200, 25);
this.label2.TextAlign = ContentAlignment.TopCenter;
this.label2.AutoSize = false;
this.label3.Text = myStopWatch.Elapsed.ToString();
this.label3.BackColor = Color.White;
this.label3.Font = new System.Drawing.Font("MS UI Gothic", 15);
this.label3.BorderStyle = BorderStyle.Fixed3D;
this.label3.Location = new Point(50, 100);
this.label3.Size = new Size(200, 25);
this.label3.TextAlign = ContentAlignment.TopCenter;
this.label3.AutoSize = false;
this.label4.Text = myStopWatch.Elapsed.ToString();
this.label4.BackColor = Color.White;
this.label4.Font = new System.Drawing.Font("MS UI Gothic", 15);
this.label4.BorderStyle = BorderStyle.Fixed3D;
this.label4.Location = new Point(50, 125);
this.label4.Size = new Size(200, 25);
this.label4.TextAlign = ContentAlignment.TopCenter;
this.label4.AutoSize = false;
this.label5.Text = myStopWatch.Elapsed.ToString();
this.label5.BackColor = Color.White;
this.label5.Font = new System.Drawing.Font("MS UI Gothic", 15);
this.label5.BorderStyle = BorderStyle.Fixed3D;
this.label5.Location = new Point(50, 150);
this.label5.Size = new Size(200, 25);
this.label5.TextAlign = ContentAlignment.TopCenter;
this.label5.AutoSize = false;
//スタート・ストップボタンのプロパティ
//this.button1.Text = "スタート";
// this.button1.Size = new Size(85, 30);
// this.button1.Location = new Point(40, 100);
//リセットボタンのプロパティ
// this.button2.Text = "リセット";
// this.button2.Size = new Size(85, 30);
//this.button2.Location = new Point(160, 100);
//this.button2.Enabled = false;
//表示更新用タイマーのプロパティ
this.timer1.Interval = 10;
this.timer2.Interval=10;
this.timer3.Interval=10;
this.timer4.Interval = 10;
this.timer5.Interval = 10;
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.CausesValidation == true)
{
count++;
}
if (count == 1)
{
button1.Location = new Point(300, 300);
}
if (count == 2)
{
button1.Location = new Point(300,300);
}
if (count == 3)
{
button1.Location = new Point(1300, 650);
}
if (count == 4)
{
button1.Location = new Point(1300, 650);
}
if (count == 5)
{
button1.Location = new Point(1300, 10);
}
if (count == 6)
{
button1.Location = new Point(1300,10);
}
if (count == 7)
{
button1.Location = new Point(10, 650);
}
if (count == 8)
{
button1.Location = new Point(10, 650);
}
if (count == 9)
{
button1.Location = new Point(650,325);
}
if (count == 10)
{
button1.Location = new Point(650,325);
}
//スイッチがoff(計測開始していない)とき
if (sw == false)
{
//計測開始
myStopWatch.Start();
//表示更新タイマー開始
timer1.Start();
timer2.Start();
timer3.Start();
timer4.Start();
timer5.Start();
//スイッチon
sw = true;
//リセットボタン使用不可
// button2.Enabled = false;
//「スタート」だったボタンの表示を「ストップ」に変更
button1.Text = "☆";
}
//スイッチがoff以外のとき(つまりはonのとき)
else
{
//計測終了
myStopWatch.Stop();
//表示固定
timer1.Stop();
timer2.Stop();
timer3.Stop();
timer4.Stop();
timer5.Stop();
//スイッチoff
sw = false;
//リセットボタン使用可
// button2.Enabled = true;
//「ストップ」だったボタンの表示を「スタート」に変更
button1.Text = "★";
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
start = 1;
startX=e.X;
startY=e.Y;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
start = 1;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
// if(start ==0) return;
start = 1;
grfx.DrawLine(Pens.Magenta,startX,startY,e.X,e.Y);
startX = e.X;
startY = e.Y;
pictureBox1.Refresh();
}
です。
ちなみに表示される5つのlabelについては無視していただいて構いません。
よろしくお願いいたします。
|