Я застрял здесь. Я хочу, чтобы глаза были нарисованы, когда «смотрели» на (угол) курсора. Кроме того, он должен содержаться в большом круге/квадранте (точно так же, как глазное яблоко). К сожалению, это просто не привлечет глаз для меня в правильном положении/углу и при каждом движении мыши. Единственное, что он будет делать, это сначала нарисовать эллипс в (0,0), но это не то, что я хочу.Создание глазного яблока в/перемещение курсора (C#)
Моя идея - рассчитать отношение треугольников к теореме пифагора. Затем примените правильные координаты (с правильным соотношением) в методе drawEllipse();
. Это нужно повторять каждый раз, когда вы перемещаете курсор.
Вы можете проверить мое изображение для математических рассуждений.
Вот мой код, обратите внимание, что панель выполнена в режиме конструктора, который не входит в этом коде, но не должен быть большим делом:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace oogjes2
{
public partial class Form1 : Form
{
public int mousex;
public int mousey;
public Form1()
{
InitializeComponent();
panel1.Paint += paintpanel;
panel1.MouseMove += panel1_MouseMove;
}
//panel1 cover the screen from (0.0) and onwards,
void panel1_MouseMove(object sender, MouseEventArgs mea)
{
int mousex = mea.X;
int mousey = mea.Y;
}
void paintpanel(object obj, PaintEventArgs pea)
{
Pen blackpen = new Pen(Color.Black, 3);
// the black outer circle which doesnt move
pea.Graphics.DrawEllipse(blackpen, -125, -125, 250, 250);
// e = 63. Diagonal distance from (0,0) to starting point drawEllipse
// factor = multiplication from mea.x and mea.y to the respective ex and ey of the small circle.
// ey = factor * mousex (mea.X). Same for ex.
float e = (float)Math.Sqrt(45 * 45 + 45 * 45); //=63
float factor = (e/(float)Math.Sqrt(mousex * mousex + mousey * mousey));
int ex = mousex * (int)factor;
int ey = mousey * (int)factor;
// the eye that should be redrawn at every mousemovement
pea.Graphics.DrawEllipse(blackpen, ex, ey, 50, 50);
this.Invalidate();
}
}
}
Это все 2D? –
Да. Просто 2D на панели. – carrotcake