`
hulunberbus
  • 浏览: 859533 次
文章分类
社区版块
存档分类
最新评论

使用C#来绘制汽车里程表

 
阅读更多

private void Form3_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g=this.CreateGraphics();
Rectangle rect=this.ClientRectangle;

//设置高度和宽
int WIDTH=rect.Width/2;
int HEIGHT=rect.Height/2;

g.SmoothingMode=SmoothingMode.AntiAlias;
FontFamily f=new FontFamily("宋体");
Font font=new Font(f,14,FontStyle.Bold,GraphicsUnit.Pixel);

g.TranslateTransform(WIDTH/2,HEIGHT/2);//原点设在窗口中心

g.FillEllipse(new SolidBrush(Color.Black),HEIGHT/-2,HEIGHT/-2,HEIGHT,HEIGHT);

g.DrawString("公里/小时",font,new SolidBrush(Color.Green),new PointF(-26,HEIGHT/-4-font.GetHeight(0.0f)+20));

g.RotateTransform(225);
for(int x=0;x<55;x++)
{
g.FillRectangle(new SolidBrush(Color.Green),-2,(HEIGHT/2-2)*-1,3,15);
g.RotateTransform(5);
}

g.ResetTransform();
g.TranslateTransform(WIDTH/2,HEIGHT/2);
g.RotateTransform(225);
int sp=0;
string tmp;
for(int x=0;x<7;x++)
{
tmp=sp.ToString();
g.FillRectangle(new SolidBrush(Color.Red),-3,(HEIGHT/2-2)*-1,6,25);
g.DrawString(tmp,
font,
new SolidBrush(Color.Green),new PointF(tmp.Length*-6,(HEIGHT/-2)+25));
g.RotateTransform(45);
sp+=20;
//g.DrawString(

}

g.ResetTransform();
g.TranslateTransform(WIDTH/2,HEIGHT/2);

float angle;
angle=(float)(30.0*2.25)+225;
g.RotateTransform(angle);

Pen p=new Pen(Color.Blue,14);
p.EndCap=LineCap.ArrowAnchor;
p.StartCap=LineCap.RoundAnchor;

g.DrawLine(p,new PointF(0,0),new PointF(0,-1*(HEIGHT/2.75f)));

g.ResetTransform();
g.TranslateTransform(WIDTH/2,HEIGHT/2);

g.FillEllipse(new SolidBrush(Color.Black),-6,-9,14,14);
g.FillEllipse(new SolidBrush(Color.Red),-7,-7,14,14);

p.Width=4.0f;
p.Color=Color.Black;
p.EndCap=LineCap.Round;
p.StartCap=LineCap.Flat;
g.DrawLine(p,new PointF(HEIGHT/15.75f,HEIGHT/3.95f),new PointF(HEIGHT/10.75f,HEIGHT/5.2f));

p.Color=Color.Red;
g.DrawLine(p,new PointF(HEIGHT/15.75f,HEIGHT/3.95f),new PointF(HEIGHT/15.75f,HEIGHT/4.6f));
g.Dispose();
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics