//ピクチャーボックス上のマウスムーブイベント private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (server_ != null && isDrawing_) { using (var g = Graphics.FromImage(pintedImg_)) { switch (pen_color) { case 1: g.DrawLine(pen_black, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); break; case 2: g.DrawLine(pen_red, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); break; case 3: g.DrawLine(pen_blue, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); break; case 4: g.DrawLine(pen_yellow, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); break; case 5: g.DrawLine(pen_green, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); break; case 6: g.DrawLine(pen_white, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); break; } oldPos_ = currentPos_; currentPos_.X = e.X; currentPos_.Y = e.Y; pictureBox1.Image = pintedImg_; //描画更新 server_.sendPaintInfo(startPos_, currentPos_, pen_color); startPos_ = currentPos_; } } }
private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { Skeleton[] skeletons = new Skeleton[0]; using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) { if (skeletonFrame != null) { skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength]; skeletonFrame.CopySkeletonDataTo(skeletons); } } if (skeletons.Length != 0) { foreach (Skeleton skel in skeletons) { if (skel.TrackingState == SkeletonTrackingState.Tracked) { Joint jointR = skel.Joints[JointType.HandRight]; Joint jointL = skel.Joints[JointType.HandLeft]; Joint jointH = skel.Joints[JointType.Head]; var hpoint = SkeletonPointToScreen(jointH.Position); var rpoint = SkeletonPointToScreen(jointR.Position); var lpoint = SkeletonPointToScreen(jointL.Position); rpoint.X = (int)(((float)rpoint.X * 1067 / 640)); rpoint.Y = (int)(((float)rpoint.Y * 720 / 480)); rpoint = pictureBox1.PointToClient(rpoint); Cpos = rpoint; //ピクチャーボックス上のマウスダウンイベント if (hpoint.Y < lpoint.Y) { currentPos_.X = rpoint.X; currentPos_.Y = rpoint.Y; oldPos_ = currentPos_; startPos_ = currentPos_; isDrawing_ = true; } //ピクチャーボックス上のマウスムーブイベント if (server_ != null && isDrawing_) { using (var g = Graphics.FromImage(pintedImg_)) { if (hpoint.X < lpoint.X) { flag = 1; } //chenge color if (hpoint.X > lpoint.X) { if (flag == 1) { //chenge color if (pen_color < 6) { pen_color++; } else { pen_color = 1; } flag = 0; start++; } } Rectangle clipRect = new Rectangle(50, 15, 520, 395); g.SetClip(clipRect); switch (pen_color) { case 1: g.DrawLine(pen_black, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); if (start == 1) { Black.Location = Cpos; Black.Parent = pictureBox1; break; } Green.Location = new Point(647, 414); Black.Location = Cpos; Black.Parent = pictureBox1; Green.Parent = textInfo.Parent; break; case 2: g.DrawLine(pen_red, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); Black.Location = new Point(647, 533); Red.Location = Cpos; Red.Parent = pictureBox1; Black.Parent = textInfo.Parent; break; case 3: g.DrawLine(pen_blue, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); Red.Location = new Point(647, 57); Blue.Location = Cpos; Blue.Parent = pictureBox1; Red.Parent = textInfo.Parent; break; case 4: g.DrawLine(pen_yellow, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); Blue.Location = new Point(647, 176); Yellow.Location = Cpos; Yellow.Parent = pictureBox1; Blue.Parent = textInfo.Parent; break; case 5: g.DrawLine(pen_green, oldPos_.X, oldPos_.Y, currentPos_.X, currentPos_.Y); Yellow.Location = new Point(647, 295); Green.Location = Cpos; Green.Parent = pictureBox1; Yellow.Parent = textInfo.Parent; break; } oldPos_ = currentPos_; currentPos_.X = rpoint.X; currentPos_.Y = rpoint.Y; pictureBox1.Image = pintedImg_; //描画更新 server_.sendPaintInfo(startPos_, currentPos_, pen_color); startPos_ = currentPos_; } } if (hpoint.Y > lpoint.Y) { isDrawing_ = false; } } } } }