C# 绘制三个实心圆 并放大缩小 求大神指导
在这个程序上面画出三个叠加的实心圆,都在屏幕最中央,最外面两个圆可以实现放大缩小
namespace CIE1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
int size = 30;
int A = 255;
Point p = Point.Empty;
private void panel1_Paint(object sender, PaintEventArgs e)
{
var g = e.Graphics;
g.TranslateTransform(panel1.Width / 2, panel1.Height / 2);//把坐标原点移到 panel 的中心
Brush Brush = new SolidBrush(Color.FromArgb(A, 255, 255, 255));
g.FillEllipse(Brush, p.X - size, p.Y - size, size + size, size + size);
}
private void Form2_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.A:
p.X -= 10;
break;
case Keys.D:
p.X += 10;
break;
case Keys.W:
p.Y -= 10;
break;
case Keys.S:
p.Y += 10;
break;
default:
break;
}
Invalidate();
}
private void Form2_KeyUp(object sender, KeyEventArgs e)
{
if (Keys.Up == e.KeyCode)
{
size = size + 5;
}
else if (Keys.Down == e.KeyCode)
{
size = size - 5;
}
if (Keys.Right == e.KeyCode)
{
if (A <= 250)
A = A + 5;
}
else if (Keys.Left == e.KeyCode)
{
A = A - 5;
}
panel1.Invalidate();
}
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
int WM_KEYDOWN = 256;
int WM_SYSKEYDOWN = 260;
if (msg.Msg == WM_KEYDOWN | msg.Msg == WM_SYSKEYDOWN)
{
switch (keyData)
{
case Keys.Escape:
this.Close();//esc关闭窗体
break;
}
}
return false;
}
[DllImport("user32.dll", EntryPoint = "ShowCursor", CharSet = CharSet.Auto)]
public static extern void ShowCursor(int status);
private void panel1_MouseEnter(object sender, EventArgs e)
{
ShowCursor(0);
}
private void panel1_MouseLeave(object sender, EventArgs e)
{
ShowCursor(1);
}
private void Form2_Load(object sender, EventArgs e)
{
}
}
}