C# 简易的绘图程序 求代码 类似于Windows的画图程序,能够画点、直线、矩形、椭圆等几何形状。
展开全部
Bitmap NewBmp = new Bitmap(w, h);//定义画布
Graphics g = Graphics.FromImage(NewBmp); //定义画笔
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.TranslateTransform(w * bottom, h * top);
g.ScaleTransform((top - bottom) * w / PointNum, -(top - bottom) * h / MaxCoordinate); //坐标转换,这里的top,bottom是picturepanel的尺寸
Pen pen = new Pen(Color.Blue, 0.5f);
Pen pennew = new Pen(Color.Black, 0.5f);
float i = 0;
for (int p = 0; p < 6; p++)
{
i = PointNum * p / HGridNum;
g.DrawLine(pennew, i, 0, i, MaxCoordinate);
}
i = 0;
for (int q = 0; q < 11; q++)
{
g.DrawLine(pennew, 0, i, PointNum, i);
i = MaxCoordinate * (q + 1) / WGridNum;
}
for (int p = 0; p < PointNum - 1; p++) //画曲线
{
g.DrawLine(pen, p, Point[p], (p + 1), Point[p + 1]);
}
g.Dispose();
g = Graphics.FromImage(NewBmp);
g.TranslateTransform(0, h);
float[] PointY = Getycoordinate(MaxCoordinate); //画Y轴坐标
Font font = new Font("Arial", 9, FontStyle.Italic);
Pen pn = new Pen(Color.Red);
float m = w / 20, s = h / 10;
for (int j = 0; j < 11; j++)
{
//g.DrawString(Convert.ToString(ysign[j]), font, pn.Brush, m, -s);
g.DrawString(Convert.ToString(PointY[j]), font, pn.Brush, m, -s);
s += h * 8 / 100.0f;
}
int[] PointX = Getxcoordinate(PointNum);
float x = w / 10, y = h / 20;
for (int k = 0; k < 11; k++)
{
g.DrawString(Convert.ToString(PointX[k]), font, pn.Brush, x, -y);
x += w * 8 / 100f;
} //drawstring是画的坐标值
//g.DrawString(strEnd, font, Brushes.Red, _w * 17 / 20f, -_h / 20f);
//g.DrawString(str, font, Brushes.Red, _w / 10f, -_h / 20f);
g.Dispose();
this.panelPicture.BackgroundImage = DrawCurve(panelPicture.Width, this.Size.Height); //将画布赋给panelpicture
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询